У меня есть класс Ruby со всеми методами stati c. Я хочу использовать эти методы в другом классе. Передача только имени класса работает, но интересно, правильный ли это путь к go или есть другой способ.
class Foo
IDENTIFIER = 'UYT78'
def self.some_data
DB.fetch_records
end
# and so forth
end
class Bar
IDENTIFIER = 'XXXXX'
def self.some_data
DB.fetch_records
end
# and so forth
end
class Reporter
def report
Foo.some_data.select {|x| x.id == Foo::identifier}
end
def other_report
Bar.some_data.select {|x| x.id == Foo::identifier}
end
end
Может ли Reporter быть изменен, чтобы принимать Foo в качестве аргумента методов, чтобы эти методы можно было повторно -используется на основании передаваемого аргумента?
Reporter.report(Foo)
Reporter.report(Bar)
и метод отчета выглядит как
def report(klass)
klass.some_data.select {|x| x.id == Foo::identifier}
end
Этот подход работает, но передача имени класса в качестве аргумента выглядит неправильно? Или может быть это так?