说我的博客有一个帖子表。帖子可以有评论,评论表行有FK到他们评论的帖子。因此,通过选择“comments.id为null”,可以找到所有无评论的帖子。
但是,让我们添加一个Comment.tone列,它可以有5个值中的一个,如“支持”,或“生气”等等。
现在我想找到所有没有愤怒评论的帖子。选择“comments.id为NULL”的SQL技术在您要求“所有不存在的行,但是如果它们确实存在,将具有'愤怒'的值”时不起作用。
那么如何选择它们?
答案 0 :(得分:1)
尝试这一点,假设模型的名称是Post and 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