Activerecord返回与数组中的所有属性匹配的对象

时间:2017-02-28 23:02:14

标签: ruby-on-rails activerecord

现在我有这个问题:

@events = Event.joins(:packages).where("packages.kind IN (?)", packages).distinct

它返回的对象只匹配packages数组中的单个属性。

我希望ActiveRecord只返回与给定数组中所有属性匹配的对象。我的查询设置方式如何完成呢?

2 个答案:

答案 0 :(得分:1)

您可以构建具有多个条件的查询

@events = Event.joins(:packages).distinct
packages.each do |package|
  @events = @events.where("packages.kind = ?", package)
end

@events

答案 1 :(得分:1)

我觉得必须有一种更简单的方法。但是,在Postgres中,尝试:

Event.joins(:packages).having('array_agg(packages.type) @> array[?]', packages).group(:id)