Я пытаюсь достичь чего-то, что наверняка возможно, но я не могу его найти, чтобы найти его из документа.
В двух словах, я хотел бы определить методы динамически:
Начальная точка:
class Foo < Bar
def baz
RecordLoader.for(Baz).load(object.baz_id)
end
def qux
RecordLoader.for(Quz).load(object.qux_id)
end
end
class Bar
end
Я бы хотел изменить его на
class Foo < Bar
record_loader_for :baz
record_loader_for :qux
end
class Bar
def self.record_loader_for(attribute)
define_method attribute.to_s do
# What is missing here?
end
end
end
Я пытаюсь выяснить, как я могу использовать значение атрибута, чтобы написать что-то вроде
RecordLoader.for(attribute.to_s.classify.constantize). # <- attribute is local to the class
.load(object.send("#{attribute.to_s}_id")) # <- object is local to the instance