aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2012-08-01 23:14:29 +0100
committerJon Leighton <j@jonathanleighton.com>2012-08-01 23:19:52 +0100
commit0e1cafcbc4d67854faf35e489571bc30f5e2ac14 (patch)
tree0722f7017ef190289c92361ab9d086793a4f95de /activerecord/lib
parent26d3e325cb85884504564b8af07dd083fc47d2a8 (diff)
downloadrails-0e1cafcbc4d67854faf35e489571bc30f5e2ac14.tar.gz
rails-0e1cafcbc4d67854faf35e489571bc30f5e2ac14.tar.bz2
rails-0e1cafcbc4d67854faf35e489571bc30f5e2ac14.zip
Add CollectionProxy#scope
This can be used to get a Relation from an association. Previously we had a #scoped method, but we're deprecating that for AR::Base, so it doesn't make sense to have it here. This was requested by DHH, to facilitate code like this: Project.scope.order('created_at DESC').page(current_page).tagged_with(@tag).limit(5).scoping do @topics = @project.topics.scope @todolists = @project.todolists.scope @attachments = @project.attachments.scope @documents = @project.documents.scope end
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/associations/collection_proxy.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/collection_proxy.rb b/activerecord/lib/active_record/associations/collection_proxy.rb
index 65a5044a3d..3a7a488302 100644
--- a/activerecord/lib/active_record/associations/collection_proxy.rb
+++ b/activerecord/lib/active_record/associations/collection_proxy.rb
@@ -855,7 +855,8 @@ module ActiveRecord
@association.scoped.scoping { yield }
end
- def spawn
+ # Returns a <tt>Relation</tt> object for the records in this association
+ def scope
association = @association
@association.scoped.extending! do
@@ -863,6 +864,9 @@ module ActiveRecord
end
end
+ # :nodoc:
+ alias spawn scope
+
# Equivalent to <tt>Array#==</tt>. Returns +true+ if the two arrays
# contain the same number of elements and if each element is equal
# to the corresponding element in the other array, otherwise returns