使用内部联接获取不同的行

Get distinct rows using inner join

我有这个声明使用 Rails 3.2:

Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1})

它 returns 我想要的,但是有很多重复的事件。

我怎样才能只获得独特的事件?

我尝试在末尾添加 .distinct 但它 returns

#<Arel::Nodes::Distinct:0x007fc13e587800>
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1}).group('events.id')

你可以试试这个。

event_id_query = Pick.where(result: nil,created_at: 5.days.ago..Time.now,league_id: 1).select(:event_id)
Event.where(id: event_id_query)

这将创建子查询,并且 return 仅来自数据库的不同事件。