Module: ActiveFedora::Scoping::Default::ClassMethods

Defined in:
lib/active_fedora/scoping/default.rb

Instance Method Summary collapse

Instance Method Details

#before_remove_constObject

: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?

Returns:

  • (Boolean)


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

#unscopedObject

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