Tldr: я пытаюсь использовать public_send для вызова методов, но некоторые из этих методов также требуют аргументов.Как проверить, какие аргументы требуются, добавить их в качестве аргументов и включить их в вызов
У меня есть массив методов в таком классе, как этот
class_methods = [:first, :second, :third, :fourth] ...
Iопределил метод can_execute
, чтобы проверить, есть ли у класса метод, если он так будет выполняться.
def can_execute (class, method_name)
if class.respond_to?(method_name.to_sym) && class.class_methods.include?(method_name.to_sym)
class.public_send(method_name)
end
end
Когда пользователь предоставляет какой-либо из этих class_method
в качестве аргумента, я могу вызвать их следующим образом
can_execute(class, method_name)
Проблема в том, что некоторые из этих методов принимают хэш в качестве аргументов, например
class.first(Value: true)
или
class.second(Id: 0, Value: "string")
Но некоторые не
class.third
Я не уверен, как включить хэш params для некоторых из этих class_methods
require?
У меня есть возможность проверить, какие аргументы нужны этим методам, вызвав method_args
onих, как
class.method_args(:first)
-> [:Value]
class.method_args(:second)
=> [:Id, :Value]
class.method_args(:third)
=> []