2016-10-17 2 views
0

меня это утверждение с помощью Rails 3.2:Получить отдельные строки, используя внутреннее соединение

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

Он возвращает то, что я хочу, но с большим количеством повторяющихся событий.

Как я могу получить только уникальные события?

Я попытался добавить .distinct до конца, но он возвращает

#<Arel::Nodes::Distinct:0x007fc13e587800> 

ответ

2
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1}).group('events.id') 
+0

Почему он возвращает хэш, когда я добавляю '.size' в конце того, что вы мне дали? – slindsey3000

+0

'Event.joins (: picks). Где (выбирает: {результат: ноль, created_at: 5.days.ago..Time.now, league_id: [1,2,3,4,5,6,7]}) .group ('events.id'). each do | event | 'будет перебирать ожидаемые события. благодаря – slindsey3000

0

Вы можете попробовать это.

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) 

Это создаст подзапрос и возвратит только отдельные события из базы данных.