【发布时间】:2021-08-11 14:01:30
【问题描述】:
我需要一些帮助来链接一些过滤器,这些过滤器涉及到很多直通关系。 一些背景:
- 我有一个名为 product 的模型。一个产品有很多类别。反之亦然,一个类别可以包含许多产品。
- 我有一个名为 colours 的模型,一个产品可以有多种颜色。这两个也有很多通过关系。
我的主要目标是能够以某种方式根据类别和颜色过滤项目。我通过表单接收用户的输入。这意味着在控制器中做一些事情,比如
@products= Product.includes(:categories).includes(:colours)
.where(categories: {id: params[:item][:category_ids]})
.where(colours: {id: params[:item][:colour_ids]})
然而,这个解决方案除了很笨拙之外还有很多问题。另外,如果用户没有传入任何过滤器,它只会使用nils 或"" 进行过滤。
有没有更好的方法通过这样的关系链接多个拥有多个?我一直在尝试找到有关如何在线执行此操作的任何提示,但我仍然不知道在这里做什么。任何帮助将非常感激。另外,如果需要任何其他代码,我可以编辑这篇文章。
【问题讨论】:
标签: ruby-on-rails model has-many-through