Module: ActiveFedora::Scoping::Default::ClassMethods
- Defined in:
- lib/active_fedora/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
default_scope
.
Instance Method Details
#before_remove_const ⇒ Object
:nodoc:
49 50 51 |
# File 'lib/active_fedora/scoping/default.rb', line 49 def before_remove_const #:nodoc: self.current_scope = nil end |
#scope_attributes? ⇒ Boolean
Are there attributes associated with this scope?
45 46 47 |
# File 'lib/active_fedora/scoping/default.rb', line 45 def scope_attributes? # :nodoc: super || default_scopes.any? || respond_to?(:default_scope) end |
#unscoped ⇒ Object
Returns a scope for the model without the default_scope
.
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"
This method also accepts a block. All queries inside the block will not use the default_scope
:
Post.unscoped {
Post.limit(10) # Fires "SELECT * FROM posts LIMIT 10"
}
It is recommended that you use the block form of unscoped because chaining unscoped with scope
does not work. Assuming that published
is a scope
, the following two statements are equal: the default_scope
is applied on both.
Post.unscoped.published
Post.published
40 41 42 |
# File 'lib/active_fedora/scoping/default.rb', line 40 def unscoped block_given? ? relation.scoping { yield } : relation end |