Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
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...
commit 3fa61ccb9eed0f17cdef85470ae708b4b09a3c06 1 parent c5e912a
@jonleighton jonleighton authored
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
Please sign in to comment.
Something went wrong with that request. Please try again.