Method: ActiveRecord::Scoping::Default::ClassMethods#unscoped
- Defined in:
- activerecord/lib/active_record/scoping/default.rb
#unscoped(&block) ⇒ Object
Returns a scope for the model without the previously set scopes.
class Post < ActiveRecord::Base
belongs_to :user
def self.default_scope
where(published: true)
end
end
class User < ActiveRecord::Base
has_many :posts
end
Post.all # Fires "SELECT * FROM posts WHERE published = true"
Post.unscoped.all # Fires "SELECT * FROM posts"
Post.where(published: false).unscoped.all # Fires "SELECT * FROM posts"
User.find(1).posts # Fires "SELECT * FROM posts WHERE published = true AND posts.user_id = 1"
User.find(1).posts.unscoped # Fires "SELECT * FROM posts"
This method also accepts a block. All queries inside the block will not use the previously set scopes.
Post.unscoped {
Post.limit(10) # Fires "SELECT * FROM posts LIMIT 10"
}
50 51 52 |
# File 'activerecord/lib/active_record/scoping/default.rb', line 50 def unscoped(&block) block_given? ? relation.scoping(&block) : relation end |