mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix for has_and_belongs_to_many & has_many_through associations while partial_writes is false
This will fix #19663 Also with this fix, active record does not fire unnecassary update queries while partial_writes is true
This commit is contained in:
parent
7ee2002008
commit
9991f14fce
3 changed files with 24 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
* Improved partial writes with HABTM and has many through associations
|
||||
to fire database query only if relation has been changed.
|
||||
|
||||
Fixes #19663.
|
||||
|
||||
*Mehmet Emin İNAÇ*
|
||||
|
||||
* Rework `ActiveRecord::Relation#last`
|
||||
|
||||
1. Never perform additional SQL on loaded relation
|
||||
|
@ -18,7 +25,6 @@
|
|||
|
||||
*Bogdan Gusiev*
|
||||
|
||||
|
||||
* Allow `joins` to be unscoped.
|
||||
|
||||
Closes #13775.
|
||||
|
|
|
@ -86,7 +86,10 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def save_through_record(record)
|
||||
build_through_record(record).save!
|
||||
association = build_through_record(record)
|
||||
if association.changed?
|
||||
association.save!
|
||||
end
|
||||
ensure
|
||||
@through_records.delete(record.object_id)
|
||||
end
|
||||
|
|
|
@ -982,4 +982,17 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
|
|||
Project.first.developers_required_by_default.create!(name: "Sean", salary: 50000)
|
||||
end
|
||||
end
|
||||
|
||||
def test_has_and_belongs_to_many_while_partial_writes_false
|
||||
begin
|
||||
original_partial_writes = ActiveRecord::Base.partial_writes
|
||||
ActiveRecord::Base.partial_writes = false
|
||||
developer = Developer.new(name: "Mehmet Emin İNAÇ")
|
||||
developer.projects << Project.new(name: "Bounty")
|
||||
|
||||
assert developer.save
|
||||
ensure
|
||||
ActiveRecord::Base.partial_writes = original_partial_writes
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue