diff options
author | Jon Leighton <j@jonathanleighton.com> | 2012-08-01 23:14:29 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2012-08-01 23:19:52 +0100 |
commit | 0e1cafcbc4d67854faf35e489571bc30f5e2ac14 (patch) | |
tree | 0722f7017ef190289c92361ab9d086793a4f95de /activerecord/lib | |
parent | 26d3e325cb85884504564b8af07dd083fc47d2a8 (diff) | |
download | rails-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.rb | 6 |
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 |