Sha256: 9a85ab610cb0393483c3e1c18df7d7ae96ed0659598a4205abcbfb8d014410f6
Contents?: true
Size: 949 Bytes
Versions: 1
Compression:
Stored size: 949 Bytes
Contents
module Traits class Model module STI def uses_sti? sti_base? || sti_derived? end def sti_base? model_class.descends_from_active_record? && model_class.subclasses.any? do |subclass| subclass.superclass == model_class end end def sti_derived? !model_class.descends_from_active_record? end def sti_attribute_name model_class.inheritance_column.to_sym end def sti_chain model_class = self.model_class chain = [model_class] until model_class.superclass == ActiveRecord::Base do model_class = model_class.superclass chain.unshift(model_class) end chain end def to_hash super.merge!( sti_base: sti_base?, sti_derived: sti_derived?, sti_attribute_name: sti_attribute_name ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord-traits-1.0.0 | lib/traits/concerns/model/sti.rb |