0

私のブログに投稿のテーブルがあるとします。投稿にはコメントを含めることができ、Comment テーブルの行には、コメントしている投稿への FK があります。そのため、「comments.id is null」を選択すると、コメントがまったくないすべての投稿を見つけることができます。

しかし、Comment.tone 列を追加してみましょう。この列には、「サポート」、「怒り」などの 5 つの値のいずれかを指定できます。

ここで、怒りのコメントがないすべての投稿を見つけたいと思います。「comments.id is NULL」を選択する SQL 手法は、「存在しないすべての行を要求する場合には機能しませんが、存在する場合は「怒り」の値になります」。

では、どうすればそれらを選択できますか?

4

1 に答える 1

1

モデルの名前が Post と Comment であると仮定して、これを試してください。

そして彼らは次のような関係を持っています

Post has_many :comments

Comment belongs_to :post

Post.joins(:comments).where(tone: 'angry').all

怒らない

Post.joins(:comments).where('tone is not in (?)', ['angry']).all

or 

Post.joins(:comments).where(tone: ['happy', 'abc']).all
于 2013-08-01T16:59:09.397 に答える