From eebcebdeb58ff7b6c05cb1cfbbc9aa4c85c9800e Mon Sep 17 00:00:00 2001 From: Piotr Jakubowski Date: Wed, 20 Jan 2016 21:53:17 +0100 Subject: When deleting through records, take into account association conditions Fixes #18424. When deleting through records, it didn't take into account the conditions that may have been affecting join model table, but was defined in association definition. --- .../associations/has_many_through_associations_test.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb index aff0dabee7..888f1a14d1 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -1215,4 +1215,20 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase ensure TenantMembership.current_member = nil end + + def test_has_many_through_update_ids_with_conditions + author = Author.create :name => "Bill" + category = categories(:general) + author.update(special_categories_with_condition_ids: [category.id], + nonspecial_categories_with_condition_ids: [category.id]) + + assert_equal [category.id], author.special_categories_with_condition_ids + assert_equal [category.id], author.nonspecial_categories_with_condition_ids + + author.update(nonspecial_categories_with_condition_ids: []) + author.reload + + assert_equal [category.id], author.special_categories_with_condition_ids + assert_equal [], author.nonspecial_categories_with_condition_ids + end end -- cgit v1.2.3