Skip to content
Browse files

Has many through - It is not necessary to manually merge in the condi…

…tions hash for the through record, because the creation is done directly on the through association, which will already handle setting the conditions.
  • Loading branch information...
1 parent c5e912a commit 3fa61ccb9eed0f17cdef85470ae708b4b09a3c06 @jonleighton jonleighton committed Jan 26, 2011
View
4 activerecord/lib/active_record/associations/through_association.rb
@@ -88,10 +88,6 @@ def construct_join_attributes(associate)
join_attributes.merge!(@reflection.source_reflection.foreign_type => associate.class.base_class.name)
end
- if @reflection.through_reflection.options[:conditions].is_a?(Hash)
- join_attributes.merge!(@reflection.through_reflection.options[:conditions])
- end
-
join_attributes
end
View
12 activerecord/test/cases/associations/has_many_through_associations_test.rb
@@ -20,10 +20,13 @@
require 'models/categorization'
require 'models/category'
require 'models/essay'
+require 'models/member'
+require 'models/membership'
+require 'models/club'
class HasManyThroughAssociationsTest < ActiveRecord::TestCase
fixtures :posts, :readers, :people, :comments, :authors, :categories,
- :owners, :pets, :toys, :jobs, :references, :companies,
+ :owners, :pets, :toys, :jobs, :references, :companies, :members,
:subscribers, :books, :subscriptions, :developers, :categorizations
# Dummies to force column loads so query counts are clean.
@@ -557,4 +560,11 @@ def test_has_many_through_belongs_to_should_update_when_the_through_foreign_key_
assert proxy.stale_target?
assert_equal authors(:david).categorizations.sort_by(&:id), post.author_categorizations.sort_by(&:id)
end
+
+ def test_create_with_conditions_hash_on_through_association
+ member = members(:groucho)
+ club = member.clubs.create!
+
+ assert_equal true, club.reload.membership.favourite
+ end
end
View
3 activerecord/test/models/club.rb
@@ -1,4 +1,5 @@
class Club < ActiveRecord::Base
+ has_one :membership
has_many :memberships
has_many :members, :through => :memberships
has_many :current_memberships
@@ -10,4 +11,4 @@ class Club < ActiveRecord::Base
def private_method
"I'm sorry sir, this is a *private* club, not a *pirate* club"
end
-end
+end
View
3 activerecord/test/models/member.rb
@@ -13,4 +13,7 @@ class Member < ActiveRecord::Base
has_many :current_memberships
has_one :club_through_many, :through => :current_memberships, :source => :club
+
+ has_many :current_memberships, :conditions => { :favourite => true }
+ has_many :clubs, :through => :current_memberships
end

0 comments on commit 3fa61cc

Please sign in to comment.
Something went wrong with that request. Please try again.