method

construct_association

Importance_0
v2.3.8 - Show latest stable - 0 notes - Class: ActiveRecord::Associations::ClassMethods::JoinDependency
construct_association(record, join, row) protected

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/associations.rb, line 1959
            def construct_association(record, join, row)
              case join.reflection.macro
                when :has_many, :has_and_belongs_to_many
                  collection = record.send(join.reflection.name)
                  collection.loaded

                  return nil if record.id.to_s != join.parent.record_id(row).to_s or row[join.aliased_primary_key].nil?
                  association = join.instantiate(row)
                  collection.target.push(association)
                  collection.__send__(:set_inverse_instance, association, record)
                when :has_one
                  return if record.id.to_s != join.parent.record_id(row).to_s
                  return if record.instance_variable_defined?("@#{join.reflection.name}")
                  association = join.instantiate(row) unless row[join.aliased_primary_key].nil?
                  set_target_and_inverse(join, association, record)
                when :belongs_to
                  return if record.id.to_s != join.parent.record_id(row).to_s or row[join.aliased_primary_key].nil?
                  association = join.instantiate(row)
                  set_target_and_inverse(join, association, record)
                else
                  raise ConfigurationError, "unknown macro: #{join.reflection.macro}"
              end
              return association
            end
Register or log in to add new notes.