class ActiveRecord::DynamicMatchers::Method - activerecord-4.2.3 Documentation

# class ActiveRecord::DynamicMatchers::Method

### Attributes

matchers[R]
attribute_names[R]
model[R]
name[R]

### Public Class Methods

match(model, name) click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 36
    def match(model, name)
      klass = matchers.find { |k| name =~ k.pattern }
      klass.new(model, name) if klass
    end

new(model, name) click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 56
    def initialize(model, name)
      @model           = model
      @name            = name.to_s
      @attribute_names = @name.match(self.class.pattern)[1].split('_and_')
      @attribute_names.map! { |n| @model.attribute_aliases[n] || n }
    end

pattern() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 41
    def pattern
      @pattern ||= /\A#{prefix}_([_a-zA-Z]\w*)#{suffix}\Z/
    end

prefix() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 45
    def prefix
      raise NotImplementedError
    end

suffix() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 49
    def suffix
      ''
    end

### Public Instance Methods

body() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 75
    def body
      raise NotImplementedError
    end

define() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 67
          def define
            model.class_eval "          def self.#{name}(#{signature})
                #{body}
              end
    ", __FILE__, __LINE__ + 1
          end

valid?() click to toggle source

    # File lib/active_record/dynamic_matchers.rb, line 63
    def valid?
      attribute_names.all? { |name| model.columns_hash[name] || model.reflect_on_aggregation(name.to_sym) }
    end