diff options
author | Jefferson Lai <jeffersonlai@Jeffersons-MacBook-Pro.local> | 2014-04-01 20:18:16 -0700 |
---|---|---|
committer | Jefferson Lai <jeffersonlai@Jeffersons-MacBook-Pro.local> | 2014-04-02 13:43:26 -0700 |
commit | 1b187caaa1e1aa1bd0f440052b4df09a5ddaa4bf (patch) | |
tree | 19924a4d2f929162f23f2c8c426fd14689ea2aa0 /activerecord/test | |
parent | f159b0a5a8e0c43942e8d60eb27a51f2679afa3e (diff) | |
download | rails-1b187caaa1e1aa1bd0f440052b4df09a5ddaa4bf.tar.gz rails-1b187caaa1e1aa1bd0f440052b4df09a5ddaa4bf.tar.bz2 rails-1b187caaa1e1aa1bd0f440052b4df09a5ddaa4bf.zip |
CollectionProxy uses the arel of its association's scope.
CollectionProxy should be able to reuse the behavior (methods) of its parent class,
but with its own state. This change allows CollectionProxy to use the arel object
corresponding to its association's scope.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/relations_test.rb | 6 | ||||
-rw-r--r-- | activerecord/test/models/post.rb | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index fddb7c204a..049c5a0606 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -573,6 +573,12 @@ class RelationTest < ActiveRecord::TestCase assert_equal expected, actual end + def test_to_sql_on_scoped_proxy + auth = Author.first + Post.where("1=1").written_by(auth) + assert_not auth.posts.to_sql.include?("1=1") + end + def test_loading_with_one_association_with_non_preload posts = Post.eager_load(:last_comment).order('comments.id DESC') post = posts.find { |p| p.id == 1 } diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb index faf539a562..099e039255 100644 --- a/activerecord/test/models/post.rb +++ b/activerecord/test/models/post.rb @@ -149,6 +149,10 @@ class Post < ActiveRecord::Base ranked_by_comments.limit_by(limit) end + def self.written_by(author) + where(id: author.posts.pluck(:id)) + end + def self.reset_log @log = [] end |