1

我无法获取查询的语法:

我有频道,其功能类似于博客中的“类别”。我有类似帖子的节目。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')仅返回已批准的频道,跳过没有批准内容的频道;但无论节目的状态如何,我都需要频道返回,但他们的节目是空数组。

4

1 回答 1

1

我个人会使用 Ruby(仍然需要加强一些 SQL):

channels = Channel.includes(:shows).order('channels.position')

channels.each { |c| c.shows.keep_if(&:approved?) }
于 2013-10-04T16:37:29.900 回答