Я пытаюсь создать супер универсальный класс, который при наследовании может вызывать универсальный работник Sidekiq.
Идея состояла бы в том, чтобы все мои сервисы могли вызываться либо нормально, либо асинхронно.Проблема в том, что я хотел бы передавать объекты в службу, но я могу передавать только указатели работнику.
Поэтому, если моему сервису нужны User
и String
, у меня сейчас было бы:
*args = [#<User:y6t4ert56uu6>, "I'm a string"]
Чтобы это работало, мне нужно сделать этот массив:
[{activerecord: true, class: "User", value: user_id}, {activerecord: false, class: "String", value: "I'm a string"}]
Как только я узнаю, что User
является объектом активной записи, я могу смело предположить, что есть id
(при условии, что я передаю только сохраненные объекты).В противном случае я просто вывел бы значение переменной.
Идея идеального решения была бы: (без важного кода)
user = User.first
str = "Hello"
is_activerecord(user) # returns true
is_activerecord(str) # returns false
Может кто-нибудь предложить идеи о том, как это сделать?
Спасибо