活动记录包括与位置



我在获取查询语法时遇到问题:

我有频道,其功能类似于博客中的"类别"。我有像帖子一样的节目。一个节目有一个布尔值"已批准",所以它是真的还是假的。频道也有立场。一个频道有很多节目。

如何按仓位顺序获取所有频道,其中节目仅获得批准 = 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')只返回已批准的频道,跳过没有批准内容的频道;但是无论节目的状态如何,我都需要频道返回,但无论它们的节目是空数组。

我个人会使用Ruby(仍然需要在某些SQL上提高

):
channels = Channel.includes(:shows).order('channels.position')
channels.each { |c| c.shows.keep_if(&:approved?) }

最新更新