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
82 83 84 85 86 87 88 89 90 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 82 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 end |
#arel_table ⇒ Object
ActiveRecord::Core 6.1
55 56 57 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 55 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
69 70 71 72 73 |
# File 'lib/active_record/virtual_attributes/virtual_arel.rb', line 69 def attribute_supported_by_sql?(name) load_schema try(:attribute_alias?, name) || (has_attribute?(name) && (!virtual_attribute?(name) || !!_virtual_arel[name.to_s])) end |