class Traits::Model

Attributes

active_record[RW]

Public Class Methods

new(active_record) click to toggle source
# File lib/traits/model.rb, line 27
def initialize(active_record)
  @active_record = active_record
end

Public Instance Methods

associations() click to toggle source
# File lib/traits/model.rb, line 35
def associations
  @associations ||= inspect_associations
end
attributes() click to toggle source
# File lib/traits/model.rb, line 31
def attributes
  @attributes ||= inspect_attributes
end
descendants() click to toggle source
# File lib/traits/model.rb, line 50
def descendants
  Traits.load_active_record_descendants!
  active_record.descendants
end
to_hash() click to toggle source
Calls superclass method Traits::Model::Querying#to_hash
# File lib/traits/model.rb, line 43
def to_hash
  super.merge!(
    attributes:   attributes.to_hash,
    associations: associations.to_hash
  )
end
to_s() click to toggle source
# File lib/traits/model.rb, line 39
def to_s
  class_name
end

Protected Instance Methods

inspect_associations() click to toggle source
# File lib/traits/model.rb, line 82
def inspect_associations
  if active_record.abstract_class?
    Traits::List.new([])
  else
    list = active_record.reflections.map do |pair|
      Traits::Association.new(active_record, pair.last)
    end
    Traits::List.new(list)
  end
end
inspect_attributes() click to toggle source

TODO Store, Storage, Virtual attributes

# File lib/traits/model.rb, line 58
def inspect_attributes
  if active_record.abstract_class?
    Traits::AttributeList.new([])
  else
    columns = active_record.columns_hash.values

    if features.try(:translates_with_globalize?)
      globalize       = features.globalize
      tr_class        = globalize.model_class_for_translations
      tr_columns_hash = tr_class.columns_hash

      columns += globalize.translated_attribute_names.map do |el|
        tr_columns_hash[el.to_s]
      end
    end

    list = columns.map do |column|
      Traits::Attribute.new(active_record, column)
    end

    Traits::AttributeList.new(list)
  end
end