В принципе, у меня есть блок кода, который нужно выполнить внутри работника sidekiq, который будет взаимодействовать с ресурсом, переданным в качестве аргумента (возможно). Этот ресурс представляет собой модель Rails.
В отличие от других вопросов по SO, связанных с передачей аргументов работнику, здесь я не знаю, будет ли это модель User или House. Поэтому я не могу просто использовать MyWorker.perform(user_id)
, так как я не знаю, какой идентификатор модели я передам в качестве аргумента.
Кроме того, я читал, что не могу просто ожидать передачи своего объекта модели работнику sidekiq и получите его на другой стороне, как только он преобразует его в json.
Итак, я имел в виду примерно следующее:
# somewhere_in_my_code.rb
MyWorker.perform(resource.id, resource_model) # still don't know what this resource_model would be
# my_worker.rb
def perform(resource_id, resource_model)
model = some_magic_method_to_return_a_model(resource_model)
resource = model.find(resource_id)
# do what I have to do with the resource found
end
Но я действительно не знаю, существует ли этот some_magic_method_to_return_a_model
. Или, если это вообще возможно. В любом случае, любая помощь будет принята с благодарностью!
ПРИМЕЧАНИЕ: я использую Ruby 2.4.8, Rails 4.1.10, Sidekiq 4.1.0