Sha256: afca3176de7567d9c93873c712c5969772cedd88714aaa74f716ca4b73ffabe8

Contents?: true

Size: 1.15 KB

Versions: 18

Compression:

Stored size: 1.15 KB

Contents

# encoding: utf-8
module Mongoid #:nodoc:
  module NamedScope
    # Creates a named_scope for the +Document+, similar to ActiveRecord's
    # named_scopes. +NamedScopes+ are proxied +Criteria+ objects that can be
    # chained.
    #
    # Example:
    #
    #   class Person
    #     include Mongoid::Document
    #     field :active, :type => Boolean
    #     field :count, :type => Integer
    #
    #     named_scope :active, :where => { :active => true }
    #     named_scope :count_gt_one, :where => { :count.gt => 1 }
    #     named_scope :at_least_count, lambda { |count| { :where => { :count.gt => count } } }
    #   end
    def named_scope(name, options = {}, &block)
      name = name.to_sym
      scopes[name] = lambda do |parent, *args|
        Scope.new(parent, options.scoped(*args), &block)
      end
      (class << self; self; end).class_eval <<-EOT
        def #{name}(*args)
          scopes[:#{name}].call(self, *args)
        end
      EOT
    end
    alias :scope :named_scope

    # Return the scopes or default to an empty +Hash+.
    def scopes
      read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {})
    end
  end
end

Version data entries

18 entries across 18 versions & 7 rubygems

Version Path
mongoid-1.9.5 lib/mongoid/named_scope.rb
mongoid-with-auth-1.9.4 lib/mongoid/named_scope.rb
mongoid-rails2-1.9.4 lib/mongoid/named_scope.rb
mongoid-rails2-1.9.3 lib/mongoid/named_scope.rb
mongoid-1.9.2 lib/mongoid/named_scope.rb
sskirby-mongoid-1.9.1 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.11 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.10 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.7 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.8 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.9 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.12 lib/mongoid/named_scope.rb
mongoid-locomotive-2.0.0.beta9 lib/mongoid/named_scope.rb
mongoid-1.9.1 lib/mongoid/named_scope.rb
chhean-mongoid-2.0.1.beta1 lib/mongoid/named_scope.rb
mongoid-2.0.0.beta.5 lib/mongoid/named_scope.rb
mongoid-1.9.0 lib/mongoid/named_scope.rb
mongo_thing-0.0.1 lib/mongo_thing/named_scope.rb