如何在rails 3中获得完全匹配的记录?

时间:2017-07-26 01:02:48

标签: sql ruby rails-activerecord

数据库中的项目:

 => [#<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]>

1 个答案:

答案 0 :(得分:1)

序列化数组在每个项目的末尾添加\n,因此您可以尝试这样做:

Item.where("item_collection LIKE ?", "%LAPTOP\n%")

另一种选择是获取所有数据,然后使用select对其进行过滤,如下所示:

Item.all.select { |item| item.item_collection.include?(:LAPTOP) }