Sha256: 2a1a7a52b63b133c06eee5ec0f56b29d3746ede48ec6635ade55e5914982b47c

Contents?: true

Size: 980 Bytes

Versions: 26

Compression:

Stored size: 980 Bytes

Contents

module MongoMapper
  class DynamicFinder
    attr_reader :options

    def initialize(model, method)
      @model = model
      @options = {}
      @options[:method] = method
      match
    end

    def valid?
      @options[:finder].present?
    end

    protected
      def match
        @options[:finder] = :first
        
        case @options[:method].to_s
          when /^find_(all_by|last_by|by)_([_a-zA-Z]\w*)$/
            @options[:finder] = :last if $1 == 'last_by'
            @options[:finder] = :all if $1 == 'all_by'
            names = $2
          when /^find_by_([_a-zA-Z]\w*)\!$/
            @options[:bang] = true
            names = $1
          when /^find_or_(initialize|create)_by_([_a-zA-Z]\w*)$/
            @options[:instantiator] = $1 == 'initialize' ? :new : :create
            names = $2
          else
            @options[:finder] = nil
        end
        
        @options[:attribute_names] = names && names.split('_and_')
      end
  end
end

Version data entries

26 entries across 26 versions & 6 rubygems

Version Path
crnixon-mongomapper-0.3.4 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.3 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.5.1 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.5.2 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.5.4 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.5.5 lib/mongomapper/dynamic_finder.rb
djsun-mongomapper-0.3.5 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.10 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.11 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.12 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.13 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.14 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.15 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.3 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.4.1 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.4 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.5 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.6 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.7 lib/mongomapper/dynamic_finder.rb
hashrocket-mongomapper-0.3.8 lib/mongomapper/dynamic_finder.rb