小编典典

不同的连接轨

sql

影片有很多活动

我正在尝试获取将来安排有活动的所有视频。

我已经有这个了:

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

此方法有效,但是如果同一视频将来有多个事件,它将为我提供重复的视频记录。当然,我可以遍历数组并清除重复项,但是必须有一种SQL方式可以做到这一点。

我尝试添加一个

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

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


阅读 167

收藏
2021-03-23

共1个答案

小编典典

尝试使用:include代替,:joins您将不会再看到重复的视频结果。

另外,您应该在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']
  }
}
2021-03-23