aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorNat Budin <nbudin@patientslikeme.com>2014-06-17 10:11:22 -0700
committerNat Budin <nbudin@patientslikeme.com>2014-06-17 10:15:04 -0700
commit30b76e5575c57056361741ebbede972f8ef477de (patch)
treeb6c0b24bc6e1242ca8170f46c8223d1537171ebd /activerecord
parent0c2fbc509545612908dd7bbdde3221518a2ec0e1 (diff)
downloadrails-30b76e5575c57056361741ebbede972f8ef477de.tar.gz
rails-30b76e5575c57056361741ebbede972f8ef477de.tar.bz2
rails-30b76e5575c57056361741ebbede972f8ef477de.zip
Don't include inheritance column in the through_scope_attributes
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/associations/has_many_through_association.rb2
-rw-r--r--activerecord/test/cases/associations/has_many_through_associations_test.rb8
-rw-r--r--activerecord/test/models/club.rb9
3 files changed, 17 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb
index 175019a72b..96466ac7c7 100644
--- a/activerecord/lib/active_record/associations/has_many_through_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -93,7 +93,7 @@ module ActiveRecord
end
def through_scope_attributes
- scope.where_values_hash(through_association.reflection.name.to_s).except!(through_association.reflection.foreign_key)
+ scope.where_values_hash(through_association.reflection.name.to_s).except!(through_association.reflection.foreign_key, through_association.reflection.klass.inheritance_column)
end
def save_through_record(record)
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 8641584c0c..ad2aa99af5 100644
--- a/activerecord/test/cases/associations/has_many_through_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb
@@ -1139,4 +1139,12 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
assert_equal 2, post.lazy_readers_unscope_skimmers.to_a.size
assert_equal 2, post.lazy_people_unscope_skimmers.to_a.size
end
+
+ def test_has_many_through_add_with_sti_middle_relation
+ club = SuperClub.create!(name: 'Fight Club')
+ member = Member.create!(name: 'Tyler Durden')
+
+ club.members << member
+ assert_equal 1, SuperMembership.where(member_id: member.id, club_id: club.id).count
+ end
end
diff --git a/activerecord/test/models/club.rb b/activerecord/test/models/club.rb
index a762ad4bb5..b260b6458a 100644
--- a/activerecord/test/models/club.rb
+++ b/activerecord/test/models/club.rb
@@ -5,7 +5,7 @@ class Club < ActiveRecord::Base
has_one :sponsor
has_one :sponsored_member, :through => :sponsor, :source => :sponsorable, :source_type => "Member"
belongs_to :category
-
+
has_many :favourites, -> { where(memberships: { favourite: true }) }, through: :memberships, source: :member
private
@@ -14,3 +14,10 @@ class Club < ActiveRecord::Base
"I'm sorry sir, this is a *private* club, not a *pirate* club"
end
end
+
+class SuperClub < ActiveRecord::Base
+ self.table_name = "clubs"
+
+ has_many :memberships, :class_name => "SuperMembership", :foreign_key => "club_id"
+ has_many :members, :through => :memberships
+end \ No newline at end of file