Changed id-writer to save join table records based on association primary key #20995
Changed id-writer to save join table records based on association primary key
This commit is contained in:
parent
0e189cb3df
commit
9c9fb19b9e
@ -72,7 +72,10 @@ def ids_writer(ids)
|
||||
pk_type = reflection.primary_key_type
|
||||
ids = Array(ids).reject(&:blank?)
|
||||
ids.map! { |i| pk_type.cast(i) }
|
||||
replace(klass.find(ids).index_by(&:id).values_at(*ids))
|
||||
records = klass.where(reflection.association_primary_key => ids).index_by do |r|
|
||||
r.send(reflection.association_primary_key)
|
||||
end.values_at(*ids)
|
||||
replace(records)
|
||||
end
|
||||
|
||||
def reset
|
||||
|
@ -882,7 +882,7 @@ def test_collection_singular_ids_setter_with_string_primary_keys
|
||||
def test_collection_singular_ids_setter_raises_exception_when_invalid_ids_set
|
||||
company = companies(:rails_core)
|
||||
ids = [Developer.first.id, -9999]
|
||||
assert_raises(ActiveRecord::RecordNotFound) {company.developer_ids= ids}
|
||||
assert_raises(ActiveRecord::AssociationTypeMismatch) {company.developer_ids= ids}
|
||||
end
|
||||
|
||||
def test_build_a_model_from_hm_through_association_with_where_clause
|
||||
|
Loading…
Reference in New Issue
Block a user