module ActiveRecord::VirtualAttributes::VirtualArel::ClassMethods

Public Instance Methods

arel_attribute(column_name, arel_table = self.arel_table) click to toggle source
Calls superclass method
# File lib/active_record/virtual_attributes/virtual_arel.rb, line 25
def arel_attribute(column_name, arel_table = self.arel_table)
  load_schema
  if virtual_attribute?(column_name) && !attribute_alias?(column_name)
    if (col = _virtual_arel[column_name.to_s])
      arel = col.call(arel_table)
      arel.name = column_name if arel.kind_of?(Arel::Nodes::Grouping)
      arel
    end
  else
    super
  end
end
attribute_supported_by_sql?(name) click to toggle source

supported by sql if

  • it is an attribute alias

  • it is an attribute that is non virtual

  • it is an attribute that is virtual and has arel defined

# File lib/active_record/virtual_attributes/virtual_arel.rb, line 42
def attribute_supported_by_sql?(name)
  load_schema
  try(:attribute_alias?, name) ||
    (has_attribute?(name) && (!virtual_attribute?(name) || !!_virtual_arel[name.to_s]))
end

Private Instance Methods

define_virtual_arel(name, arel) click to toggle source
# File lib/active_record/virtual_attributes/virtual_arel.rb, line 50
def define_virtual_arel(name, arel)
  self._virtual_arel = _virtual_arel.merge(name => arel)
end