diff options
author | José Valim <jose.valim@gmail.com> | 2010-06-29 17:18:55 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-06-29 17:18:55 +0200 |
commit | bd1666ad1de88598ed6f04ceffb8488a77be4385 (patch) | |
tree | 853cc5a1e6af361ed4fbb4af998099922f1e20c0 /activerecord/lib/active_record/persistence.rb | |
parent | 9013227e00895ac95f29077229ec2fb156f450b0 (diff) | |
download | rails-bd1666ad1de88598ed6f04ceffb8488a77be4385.tar.gz rails-bd1666ad1de88598ed6f04ceffb8488a77be4385.tar.bz2 rails-bd1666ad1de88598ed6f04ceffb8488a77be4385.zip |
Add scoping and unscoped as the syntax to replace the old with_scope and with_exclusive_scope. A few examples:
* with_scope now should be scoping:
Before:
Comment.with_scope(:find => { :conditions => { :post_id => 1 } }) do
Comment.first #=> SELECT * FROM comments WHERE post_id = 1
end
After:
Comment.where(:post_id => 1).scoping do
Comment.first #=> SELECT * FROM comments WHERE post_id = 1
end
* with_exclusive_scope now should be unscoped:
class Post < ActiveRecord::Base
default_scope :published => true
end
Post.all #=> SELECT * FROM posts WHERE published = true
Before:
Post.with_exclusive_scope do
Post.all #=> SELECT * FROM posts
end
After:
Post.unscoped do
Post.all #=> SELECT * FROM posts
end
Notice you can also use unscoped without a block and it will return an anonymous scope with default_scope values:
Post.unscoped.all #=> SELECT * FROM posts
Diffstat (limited to 'activerecord/lib/active_record/persistence.rb')
-rw-r--r-- | activerecord/lib/active_record/persistence.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 9e28aa2a05..50166c4385 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -182,7 +182,7 @@ module ActiveRecord def reload(options = nil) clear_aggregation_cache clear_association_cache - @attributes.update(self.class.send(:with_exclusive_scope) { self.class.find(self.id, options) }.instance_variable_get('@attributes')) + @attributes.update(self.class.unscoped { self.class.find(self.id, options) }.instance_variable_get('@attributes')) @attributes_cache = {} self end |