是否可以确定变量是否是活动记录对象?



我正在尝试创建一个超级泛型类,当继承自时,我可以调用泛型 Sidekiq worker 。

这个想法是让我的所有服务都能正常或异步调用。问题是我想将对象传递给服务,但我只能将指针传递给工作线程。

因此,如果我的服务需要UserString,我目前将拥有:

*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

任何人都可以就如何做到这一点提出想法吗?

谢谢

Object.is_a?

user = User.first
str = "Hello"
user.is_a?(ActiveRecord::Base) # true
str.is_a?(ActiveRecord::Base)  # false

最新更新