Я хочу создать кучу методов для функции find_by. Я не хочу писать одно и то же снова и снова, поэтому я хочу использовать метапрограммирование.
Скажем, я хочу создать метод для поиска по имени, принимая имя в качестве аргумента. Как мне это сделать? Я использовал define_method в прошлом, но у меня не было аргументов для метода. Здесь мой (плохой) подход
["name", "brand"].each do |attribute|
define_method("self.find_by_#{attribute}") do |attr_|
all.each do |prod|
return prod if prod.attr_ == attr_
end
end
end
Любые мысли? Спасибо заранее.