Я выполняю рефакторинг своего кода и хочу передать некоторую логику параметру при создании экземпляра класса. Чтобы лучше описать проблему, я поделюсь некоторым кодом.
У меня есть этот метод, который принимает объект в качестве аргумента.
def common_attributes(klass)
klass.new(id: some_id, name: some_name, role_id: some_role.id)
end
Я хочу использовать это, чтобы сделать что-то вроде:
def common_attributes(klass)
klass.new(id: some_id,
name: some_name
role_id: some_role.id unless Module::class)
end
Это потому, что у меня есть несколько классов внутри моего модуля. Два из этих классов принимают те же три аргумента, т.е. id
и name
, role_id
. Другой класс принимает два аргумента id
и name
. Обратите внимание, что это примерные значения, и реализация может не иметь смысла для проблемы I, но важно понять проблему, с которой я столкнулся.
Вот как бы я использовал функцию:
common_attributes(MyModule::Myclass)
common_attributes(MyModule::DifferentClass)
common_attributes(MyModule::AnotherDifferentClass)
Как я могу убедиться, что другой класс, который принимает меньше аргументов, получает требуемые параметры и оставляет то, что ему не нужно?
NB Я не могу редактировать классы для включения дополнительных параметров.