Module: ActiveRecord::Scoping::Default::ClassMethods
- Defined in:
- lib/active_record/scoping/default.rb
Instance Method Summary collapse
-
#before_remove_const ⇒ Object
:nodoc:.
-
#default_scopes?(all_queries: false) ⇒ Boolean
Checks if the model has any default scopes.
-
#scope_attributes? ⇒ Boolean
Are there attributes associated with this scope?.
-
#unscoped(&block) ⇒ Object
Returns a scope for the model without the previously set scopes.
Instance Method Details
#before_remove_const ⇒ Object
:nodoc:
51 52 53 |
# File 'lib/active_record/scoping/default.rb', line 51 def before_remove_const # :nodoc: self.current_scope = nil end |
#default_scopes?(all_queries: false) ⇒ Boolean
Checks if the model has any default scopes. If all_queries is set to true, the method will check if there are any default_scopes for the model where all_queries
is true.
58 59 60 61 62 63 64 |
# File 'lib/active_record/scoping/default.rb', line 58 def default_scopes?(all_queries: false) if all_queries self.default_scopes.any?(&:all_queries) else self.default_scopes.any? end end |
#scope_attributes? ⇒ Boolean
Are there attributes associated with this scope?
47 48 49 |
# File 'lib/active_record/scoping/default.rb', line 47 def scope_attributes? # :nodoc: super || default_scopes.any? || respond_to?(:default_scope) end |
#unscoped(&block) ⇒ 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"
}
42 43 44 |
# File 'lib/active_record/scoping/default.rb', line 42 def unscoped(&block) block_given? ? relation.scoping(&block) : relation end |