diff options
author | Akira Matsuda <ronnie@dio.jp> | 2013-07-08 19:51:15 +0900 |
---|---|---|
committer | Akira Matsuda <ronnie@dio.jp> | 2013-07-10 00:40:11 +0900 |
commit | 54eee8b5f28e05376626e98650d4bde8b8451603 (patch) | |
tree | 277949c8d93173ddf04a65fefb8889ac2f0e2cd2 /activerecord/test | |
parent | c42260a3251157070a1bafadd179e4441df8933e (diff) | |
download | rails-54eee8b5f28e05376626e98650d4bde8b8451603.tar.gz rails-54eee8b5f28e05376626e98650d4bde8b8451603.tar.bz2 rails-54eee8b5f28e05376626e98650d4bde8b8451603.zip |
Make sure that a joins Relation can be merged with has_many :through + association proxy
Closes #11248.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/associations/has_many_through_associations_test.rb | 6 | ||||
-rw-r--r-- | activerecord/test/models/author.rb | 6 |
2 files changed, 11 insertions, 1 deletions
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 ee88fd490a..119e94b831 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -5,6 +5,7 @@ require 'models/reference' require 'models/job' require 'models/reader' require 'models/comment' +require 'models/rating' require 'models/tag' require 'models/tagging' require 'models/author' @@ -616,6 +617,11 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase assert_equal post.author.author_favorites, post.author_favorites end + def test_merge_join_association_with_has_many_through_association_proxy + author = authors(:mary) + assert_nothing_raised { author.comments.ratings.to_sql } + end + def test_has_many_association_through_a_has_many_association_with_nonstandard_primary_keys assert_equal 2, owners(:blackbeard).toys.count end diff --git a/activerecord/test/models/author.rb b/activerecord/test/models/author.rb index af80b1ba42..feb828de31 100644 --- a/activerecord/test/models/author.rb +++ b/activerecord/test/models/author.rb @@ -13,7 +13,11 @@ class Author < ActiveRecord::Base has_many :posts_with_extension, :class_name => "Post" has_one :post_about_thinking, -> { where("posts.title like '%thinking%'") }, :class_name => 'Post' has_one :post_about_thinking_with_last_comment, -> { where("posts.title like '%thinking%'").includes(:last_comment) }, :class_name => 'Post' - has_many :comments, :through => :posts + has_many :comments, through: :posts do + def ratings + Rating.joins(:comment).merge(self) + end + end has_many :comments_containing_the_letter_e, :through => :posts, :source => :comments has_many :comments_with_order_and_conditions, -> { order('comments.body').where("comments.body like 'Thank%'") }, :through => :posts, :source => :comments has_many :comments_with_include, -> { includes(:post) }, :through => :posts, :source => :comments |