bmc*_*mck 6 ruby sql activerecord ruby-on-rails
视频有很多活动
我正在努力获取将来安排活动的所有视频.
我已经有了这个:
named_scope :scheduled_in_future, :joins => :event, :conditions => ["event.scheduled_start > ? AND event.status = ?", Time.now.to_i, 'PENDING']
Run Code Online (Sandbox Code Playgroud)
这是有效的,但如果同一个视频将来有多个事件,它将给我重复的视频记录.当然,我可以通过数组并清除重复项,但必须有一种SQL方法来完成它.
我试过添加一个
:select => "DISTINCT(video.id)"
Run Code Online (Sandbox Code Playgroud)
但它只返回ID字段而不是整个记录.
Dyl*_*kow 17
尝试使用: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']
}
}
Run Code Online (Sandbox Code Playgroud)