lib/active_model/associations/active_record_reflection.rb
module ActiveModel::Associations
module ActiveRecordReflection
extend ActiveSupport::Concern
included do
if ActiveRecord.version >= Gem::Version.new("4.1.2")
class_attribute :_reflections
self._reflections = ActiveSupport::HashWithIndifferentAccess.new
else
class_attribute :reflections
self.reflections = {}
end
end
module ClassMethods
if ActiveRecord.version < Gem::Version.new("4.1")
def create_reflection(macro, name, scope, options, active_record)
case macro
when :has_many, :belongs_to
klass = ActiveRecord::Reflection::AssociationReflection
reflection = klass.new(macro, name, scope, options, active_record)
end
self.reflections = self.reflections.merge(name => reflection)
reflection
end
end
def reflect_on_association(association)
if ActiveRecord.version >= Gem::Version.new("4.1.2")
_reflections[association.to_s]
else
reflections[association]
end
end
end
end
end