【问题标题】:Exclude objects in query if certain value exists in serialized attribute如果序列化属性中存在某个值,则排除查询中的对象
【发布时间】:2014-12-16 15:07:10
【问题描述】:
Class User < ActiveRecord::Base
  serialize :pets, Array
end

我将如何创建一个可链接的查询来排除用户,例如序列化的pets 属性中有“cat”吗?

【问题讨论】:

  • 没有干净的方法。使用序列化时,您会丢失数据库的大部分功能,只保留持久性。您必须依靠“幕后”的东西。

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


【解决方案1】:
User.where.not("pets = ?", ["cat"].to_yaml)

【讨论】:

  • 这仅适用于完全匹配(例如,用户只有一只猫),要获得部分匹配(例如,他们有一只狗和一只猫,但仍然匹配),请使用 User.where("pets LIKE ?", "%#{['cat'].to_yaml}%")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多