在序列化属性中查找具有特定值的对象

时间:2014-05-04 10:20:29

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我有一个带有serialized(数组)属性的模型。

我一直在尝试建议in this answer的查询:

MyModel.where("my_attribute = ?", [43565, 43402].to_yaml)

但它只返回一个空的ActiveRecord::Relation

如何查询在序列化属性中查找具有特定值的对象?

型号代码:

class User < ActiveRecord::Base
  has_secure_password validations: false
  belongs_to :organization
  serialize :actions, Array
end

列类型为String

2 个答案:

答案 0 :(得分:0)

暂时忘掉Rails并转到SQL。它是如何存储在数据库中的?是整数类型,字符串类型?您需要匹配该特定列才能生效。 Ruby可以进行解析和正确的ActiveRecord查询。但是,您的SQL数据库正在进行查找。

不确定这是否直接回答了您的问题。但它应该让你朝着正确的方向前进。

答案 1 :(得分:0)

使用IN命令

MyModel.where("my_attribute IN(?)", [43565, 43402])

你也可以使用NOT IN