ruby-on-rails - Rails, Has and belongs to many, 匹配所有条件

标签 ruby-on-rails ruby activerecord has-and-belongs-to-many

我有两个模型 Article 和 Category

class Article < ApplicationRecord

  has_and_belongs_to_many :categories

end

我想获得关联类别 1 和类别 2 的文章。

Article.joins(:categories).where(categories: {id: [1,2]}  )

上面的代码不会这样做,因为如果与类别 1 或类别 2 相关联的文章将被返回,而这不是目标。两者必须匹配。

最佳答案

只能查询第一类的文章,也是第二类的文章。

它会是这样的:

Article.joins(:categories)
  .where(categories: { id: 1 })
  .where(id: Article.joins(:categories).where(categories: { id: 2 }))

请注意,它可以是:

Category.find(1).articles.where(id: Category.find(2).articles)

但它会提出额外的请求,并需要额外注意无法找到类别的情况。

关于ruby-on-rails - Rails, Has and belongs to many, 匹配所有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46425005/

相关文章:

ruby-on-rails - Rails 6.1.4 弃用警告 : Rendering actions with '.'

ruby - Ruby 中的 XSD 模式验证

activerecord - 在 Rails 3 中使用 around_destroy 对数据库进行更新而不是删除

ruby-on-rails - 重新加载在Rspec中不起作用的对象

ruby-on-rails - friendly_id 覆盖 SecureRandom uuid/在 slug urls Rails 上附加数字序列

ruby-on-rails - Rails 6.1 升级 : undefined method `assert_nothing_raised'

ruby-on-rails - 'File.read' 和 'IO.read' 有什么区别?

Ruby Fiddle dll 搜索路径

ruby - 我如何记录提供 block 是可选的方法?

ruby-on-rails - rails : Serialize value as comma-separated and not as YAML