Module: ActiveRecord::Scoping::Default::ClassMethods
- Defined in:
 - lib/active_record/scoping/default.rb
 
Instance Method Summary collapse
- 
  
    
      #before_remove_const  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #scope_attributes?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Are there attributes associated with this scope?.
 - 
  
    
      #unscoped  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a scope for the model without the previously set scopes.
 
Instance Method Details
#before_remove_const ⇒ Object
:nodoc:
      42 43 44  | 
    
      # File 'lib/active_record/scoping/default.rb', line 42 def before_remove_const #:nodoc: self.current_scope = nil end  | 
  
#scope_attributes? ⇒ Boolean
Are there attributes associated with this scope?
      38 39 40  | 
    
      # File 'lib/active_record/scoping/default.rb', line 38 def scope_attributes? # :nodoc: super || default_scopes.any? || respond_to?(:default_scope) end  | 
  
#unscoped ⇒ Object
Returns a scope for the model without the previously set scopes.
class Post < ActiveRecord::Base
  def self.default_scope
    where(published: true)
  end
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"
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"
}
  
      33 34 35  | 
    
      # File 'lib/active_record/scoping/default.rb', line 33 def unscoped block_given? ? relation.scoping { yield } : relation end  |