Permalink
Browse files

Merge pull request #13899 from Fortisque/kevin/active_record_HABTM_wi…

…th_belongs_to

destruction errors out on HABTM w/out primary key
  • Loading branch information...
2 parents 7d196cf + 00ebbb7 commit 702e0e1a6b6d776b0527f68d78a50714312fe149 @rafaelfranca rafaelfranca committed Feb 4, 2014
View
2 activerecord/lib/active_record/associations/has_many_association.rb
@@ -111,7 +111,7 @@ def delete_records(records, method)
records.each(&:destroy!)
update_counter(-records.length) unless inverse_updates_counter_cache?
else
- if records == :all
+ if records == :all || !reflection.klass.primary_key
scope = self.scope
else
scope = self.scope.where(reflection.klass.primary_key => records)
View
10 activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
@@ -775,6 +775,16 @@ def test_include_method_in_has_and_belongs_to_many_association_should_return_tru
assert project.developers.include?(developer)
end
+ def test_destruction_does_not_error_without_primary_key
+ redbeard = pirates(:redbeard)
+ george = parrots(:george)
+ redbeard.parrots << george
+ assert_equal 2, george.pirates.count
+ Pirate.includes(:parrots).where(parrot: redbeard.parrot).find(redbeard.id).destroy
+ assert_equal 1, george.pirates.count
+ assert_equal [], Pirate.where(id: redbeard.id)
+ end
+
test "has and belongs to many associations on new records use null relations" do
projects = Developer.new.projects
assert_no_queries do

0 comments on commit 702e0e1

Please sign in to comment.