ruby-on-rails - 需要简单的 Rails 多对多关联逻辑

标签 ruby-on-rails ruby-on-rails-4 rails-activerecord

我有一个产品列表和一个类别列表。我还有一个映射表product_categories,它告诉产品属于不同的类别,并且类别有很多产品。这里的类别列表是由admin定义的。类别的数量是固定的,但可以变化。现在我需要获取与类别映射的产品列表

product.rb
has_many :product_categories, dependent: :destroy
has_many :categories, through: :product_categories

category.rb
has_many :product_categories
has_many :products, :through => :product_categories

product_category.rb
belongs_to :product
belongs_to :category

我将代码编写为:

ProductCategory.joins(:category).map(&:category).uniq

有什么办法可以简化这一行吗?

最佳答案

要获取包含产品的类别列表,您可以使用 SQL inner join,这是 Rails 中的默认设置。

Category.joins(:product_categories).distinct

关于ruby-on-rails - 需要简单的 Rails 多对多关联逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40282439/

相关文章:

ruby-on-rails - Postgres数据库查询过滤事件记录结果

ruby-on-rails - 带有 rspec 和 factory_girl_rails 的 Rails 4 安装引擎

ruby-on-rails - 如何添加本地主机 :3000 to Facebook App for development

ruby-on-rails - 如何使 ActiveRecord 成为线程安全的

ruby-on-rails - 从Rails 5开始,何时:inverse_of necessary to set manually?

ruby-on-rails - 整理 .html.erb 输出

ruby-on-rails - rails 3 资源 "without"

ruby-on-rails - 在 Rails 中使用 STI 时出现 ActiveRecord::SubclassNotFound 错误

ruby - 如何总结所有哈希值?

ruby-on-rails - 为什么 ActiveRecord/PostgreSQL 在数据库中找不到我的数据?