class MarkMapper::Plugins::DynamicQuerying::DynamicFinder

Attributes

attributes[R]
bang[R]
finder[R]
instantiator[R]
method[R]

Public Class Methods

new(method) click to toggle source
# File lib/mark_mapper/plugins/dynamic_querying/dynamic_finder.rb, line 8
def initialize(method)
  @method = method
  @finder = :first
  @bang   = false
  match
end

Public Instance Methods

found?() click to toggle source
# File lib/mark_mapper/plugins/dynamic_querying/dynamic_finder.rb, line 15
def found?
  @finder.present?
end
raise?() click to toggle source
# File lib/mark_mapper/plugins/dynamic_querying/dynamic_finder.rb, line 19
def raise?
  bang == true
end

Protected Instance Methods

match() click to toggle source
# File lib/mark_mapper/plugins/dynamic_querying/dynamic_finder.rb, line 24
def match
  case method.to_s
    when /^find_(all_by|by)_([_a-zA-Z]\w*)$/
      @finder = :all if $1 == 'all_by'
      names = $2
    when /^find_by_([_a-zA-Z]\w*)\!$/
      @bang = true
      names = $1
    when /^find_or_(initialize|create)_by_([_a-zA-Z]\w*)$/
      @instantiator = $1 == 'initialize' ? :new : :create
      names = $2
    else
      @finder = nil
  end

  @attributes = names && names.split('_and_')
end