Можно ли определить, является ли переменная объектом activerecord или нет? - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь создать супер универсальный класс, который при наследовании может вызывать универсальный работник 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

Может кто-нибудь предложить идеи о том, как это сделать?

Спасибо

1 Ответ

0 голосов
/ 23 октября 2018

Object.is_a? на помощь:

user = User.first
str = "Hello"

user.is_a?(ActiveRecord::Base) # true
str.is_a?(ActiveRecord::Base)  # false
...