Module: ActiveRecord::VirtualAttributes::VirtualArel::ClassMethods
- Defined in:
- lib/active_record/virtual_attributes/virtual_arel.rb
Instance Method Summary collapse
-
#arel_for_virtual_attribute(column_name, table) ⇒ Nil|Arel::Nodes::Grouping
private api.
-
#arel_table ⇒ Object
ActiveRecord::Core 6.1.
-
#attribute_supported_by_sql?(name) ⇒ Boolean
supported by sql if any are true: - it is an attribute alias - it is an attribute that is non virtual - it is an attribute that is virtual and has arel defined.
Instance Method Details
#arel_for_virtual_attribute(column_name, table) ⇒ Nil|Arel::Nodes::Grouping
private api
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 102 def arel_for_virtual_attribute(column_name, table) # :nodoc: arel_lambda = _virtual_arel[column_name.to_s] return unless arel_lambda arel = arel_lambda.call(table) arel = Arel::Nodes::Grouping.new(arel) unless arel.kind_of?(Arel::Nodes::Grouping) arel.name = column_name arel.relation = table arel end |
#arel_table ⇒ Object
ActiveRecord::Core 6.1
75 76 77 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 75 def arel_table @arel_table ||= ArelTableProxy.new(table_name, :type_caster => type_caster).tap { |t| t.klass = self } end |
#attribute_supported_by_sql?(name) ⇒ Boolean
supported by sql if any are true:
-
it is an attribute alias
-
it is an attribute that is non virtual
-
it is an attribute that is virtual and has arel defined
89 90 91 92 93 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 89 def attribute_supported_by_sql?(name) load_schema try(:attribute_alias?, name) || (has_attribute?(name) && (!virtual_attribute?(name) || !!_virtual_arel[name.to_s])) end |