1
0
Fork 0
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:
Mehmet Emin İNAÇ 2015-04-14 22:50:36 +03:00
parent 7ee2002008
commit 9991f14fce
3 changed files with 24 additions and 2 deletions

View file

@ -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.

View file

@ -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

View file

@ -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