Methods
Attributes
[R] | matchers | |
[R] | attribute_names | |
[R] | model | |
[R] | name |
Class Public methods
match(model, name)
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 32
def match(model, name)
klass = matchers.find { |k| k.pattern.match?(name) }
klass.new(model, name) if klass
end
🔎 See on GitHub
new(model, method_name)
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 52
def initialize(model, method_name)
@model = model
@name = method_name.to_s
@attribute_names = @name.match(self.class.pattern)[1].split("_and_")
@attribute_names.map! { |name| @model.attribute_aliases[name] || name }
end
🔎 See on GitHub
pattern()
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 37
def pattern
@pattern ||= /\A#{prefix}_([_a-zA-Z]\w*)#{suffix}\Z/
end
🔎 See on GitHub
prefix()
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 41
def prefix
raise NotImplementedError
end
🔎 See on GitHub
suffix()
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 45
def suffix
""
end
🔎 See on GitHub
Instance Public methods
define()
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 63
def define
model.class_eval <<-CODE, __FILE__, __LINE__ + 1
def self.#{name}(#{signature})
#{body}
end
CODE
end
🔎 See on GitHub
valid?()
📝 Source code
# File activerecord/lib/active_record/dynamic_matchers.rb, line 59
def valid?
attribute_names.all? { |name| model.columns_hash[name] || model.reflect_on_aggregation(name.to_sym) }
end
🔎 See on GitHub