例如:
class User < ActiveRecord::Base
serialize :preferences, Hash
end
偏好设置包含哈希记录... 例如:
{'category' => 'a', 'type' => 'b', 'published' => true}
如何进行一些查询,我必须返回与序列化列中特定键值匹配/等于的记录。
我希望有类似的东西:
.where('preferences.published' => true)
提前致谢。
答案 0 :(得分:1)
您不能使用本机数据库例程来查询序列化字段。 执行此查询的唯一方法是执行
User.all.select { |u| u.preferences['published'] == true }
您只想在不想查询字段时序列化字段,只是将数据“暴露”为“ 如果你需要对它进行全局查询,你应该有一个UserPreference表,例如user_id和不同的首选项。
你可以'破解'它正在做什么@mudasobwa说.where('preferences LIKE "%published: true%"')
,但它可能有风险。
答案 1 :(得分:0)
默认情况下,Rails将哈希序列化为YAML,因此您可以执行以下操作:
.where('preferences LIKE "%published: true%"')