【发布时间】:2013-10-11 17:44:37
【问题描述】:
我在获取查询语法时遇到问题:
我有频道,其功能类似于博客中的“类别”。我有类似帖子的节目。 Show 有一个布尔值“已批准”,因此它是真或假。频道也有位置。。一个频道有很多节目。
我如何才能通过位置顺序获得所有频道,其中只有批准 = true 的节目?
我试过这个:Channel.includes(:shows).order('channels.position'),这让我的频道处于正确的位置,虽然我已经可以做到channel.shows,但无论show.approved=true是否是,它都会将所有节目分配给该频道。
Channel.includes(:shows).order('channels.position') 返回所有频道和节目,无论节目是否获得批准。
Channel.includes(:shows).where(shows:{approved: true}).order('channels.position') 只返回已获批的频道,跳过未获批内容的频道;但是无论节目的状态如何,我都需要频道返回,但他们的节目是空数组。
【问题讨论】:
-
您需要使用外连接。检查此 SO 链接:stackoverflow.com/questions/1509692/…
-
你的意思是这样?
Channel.includes(:shows).where(:shows => []).order('channels.position')
标签: ruby-on-rails ruby activerecord ruby-on-rails-4 rails-activerecord