1

クエリの構文を取得するのに問題があります。

ブログの「カテゴリ」のように機能するチャンネルがあります。投稿のようなショーがあります。ショーにはブール値の「承認済み」があるため、true または false です。チャンネルにもポジションがあります。チャンネルにはたくさんの番組があります。

承認済み = true のみの番組で、位置順ですべてのチャンネルを取得するにはどうすればよいですか?

私はこれを試しました:Channel.includes(:shows).order('channels.position')そしてそれは私に正しい位置にチャンネルを取得します、そして私はすでに行うことができますがchannel.showsshow.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 に答える