数据库中的项目:
=> [#<Item id: 1, item_collection: [:LAPTOP, :COMPUTER, :MOUSE, :SPEAKER]>,
#<Item id: 2, item_collection: [:LAPTOPANDKEYBOARD, :DISK, :SCREEN]>]
下面的查询会给我两个记录(包括LAPTOP和LAPTOPANDKEYBOARD)。
Item.where("item_collection like ?", "%LAPTOP%")
=> [#<Item id: 1, item_collection: [:LAPTOP, :COMPUTER, :MOUSE, :SPEAKER]>,
#<Item id: 2, item_collection: [:LAPTOPANDKEYBOARD, :DISK, :SCREEN]>]
但我只想要只有LAPTOP的记录。
#<Item id: 1, item_collection: [:LAPTOP, :COMPUTER, :MOUSE, :SPEAKER]>
答案 0 :(得分:1)
序列化数组在每个项目的末尾添加\n
,因此您可以尝试这样做:
Item.where("item_collection LIKE ?", "%LAPTOP\n%")
另一种选择是获取所有数据,然后使用select
对其进行过滤,如下所示:
Item.all.select { |item| item.item_collection.include?(:LAPTOP) }