unscoped(&block) public

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"
}
Show source
Register or log in to add new notes.