如何按数组查找记录?

时间:2018-06-24 08:58:13

标签: ruby-on-rails ruby

我们假设

class Sale< ApplicationRecord

    serialize :items, Array

end

如何基于数组属性进行搜索。这些项目是整数或ID的列表。

现在,我想找出所有在其商品数组中具有特定ID的销售记录。

假设我要搜索ID 10

如何在哪里使用呢?我正在寻找类似于

的东西
Sale.where(items: Array.new(10))

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以通过创建新的关系Sale has_many Items来实现相同目的,然后可以使用find传递ID数组。

class Sale < ApplicationRecord
    has_many :items
end

class Item < ApplicationRecord
    belongs_to :items
end

sale = Sale.first()
sale.items.find([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) // returns an array with the matching items

答案 1 :(得分:0)

Sale.where("items = ANY(ARRAY[?]::int[])", [10])

请注意,int应该替换为您的items字段类型(我想它已经是int了)