独特的加入Rails

video有很多活动

我正在努力获取将来安排活动的所有video。

我已经有了这个:

named_scope :scheduled_in_future, :joins => :event, :conditions => ["event.scheduled_start > ? AND event.status = ?", Time.now.to_i, 'PENDING'] 

这是有效的,但如果同一个video将来有多个事件,它将给我重复的video记录。 当然,我可以通过数组并清除重复项,但必须有一种SQL方法来完成它。

我试过添加一个

 :select => "DISTINCT(video.id)" 

但它只返回ID字段而不是整个记录。

尝试使用:include而不是:joins ,你不应该再看到任何重复的video结果。

此外,您应该在named_scope中使用lambda,否则Time.now将在您第一次使用时被缓存,并且您将开始获得不正确的结果。

 named_scope :scheduled_in_future, lambda { { :include => :events, :conditions => ["event.scheduled_start > ? AND event.status = ?", Time.now.to_i, 'PENDING'] } } 

您是否尝试按videoID进行分组?