edge badge
Methods
B
D
M
N
P
S
V
Attributes
[R] matchers
[R] attribute_names
[R] model
[R] name
Class Public methods
new(model, name)
# File activerecord/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
Instance Public methods
body()
# File activerecord/lib/active_record/dynamic_matchers.rb, line 75
def body
  raise NotImplementedError
end
define()
# File activerecord/lib/active_record/dynamic_matchers.rb, line 67
      def define
        model.class_eval "          def self.#{name}(#{signature})
            #{body}
          end
", __FILE__, __LINE__ + 1
      end
match(model, name)
# File activerecord/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
pattern()
# File activerecord/lib/active_record/dynamic_matchers.rb, line 41
def pattern
  @pattern ||= /\A#{prefix}_([_a-zA-Z]\w*)#{suffix}\Z/
end
prefix()
# File activerecord/lib/active_record/dynamic_matchers.rb, line 45
def prefix
  raise NotImplementedError
end
suffix()
# File activerecord/lib/active_record/dynamic_matchers.rb, line 49
def suffix
  ''
end
valid?()
# File activerecord/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