Class: ActiveRecord::Associations::ClassMethods::JoinDependency
- Inherits:
-
Object
- Object
- ActiveRecord::Associations::ClassMethods::JoinDependency
- Defined in:
- lib/composite_primary_keys/associations.rb
Defined Under Namespace
Classes: JoinAssociation, JoinBase
Instance Method Summary collapse
Instance Method Details
#construct_association(record, join, row) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/composite_primary_keys/associations.rb', line 69 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 join_aliased_primary_keys = join.active_record.composite? ? join.aliased_primary_key : [join.aliased_primary_key] return nil if record.id.to_s != join.parent.record_id(row).to_s or not join_aliased_primary_keys.select {|key| row[key].nil?}.blank? association = join.instantiate(row) collection.target.push(association) unless collection.target.include?(association) when :has_one, :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) record.send("set_#{join.reflection.name}_target", association) else raise ConfigurationError, "unknown macro: #{join.reflection.macro}" end return association end |