我试图建立一个看起来相当复杂的查询,并希望有人能指出我正确的方向,我有点陷入困境。
模型Project
有2个has_many关系到模型Sector
和模型Service
。
我想要实现的是:
/projects?service_ids[]=1§or_ids[]=1§or_ids[]=2
基本上我只想获得服务1和第1和第2部分的项目。
我知道由于has_many通过关系,我可以在服务或部门下获得项目。但要做到这一点,我需要首先获取服务/部门。然而,在这种情况下,我觉得我需要根据关系获得项目和过滤器。我只是不确定我是怎么做的。
我希望我能够妥善解释它。如果您需要任何额外信息,请告诉我。
编辑:
澄清一点,如果没有在params上传递service_ids,那么我想检查sector_ids。现在,如果两个sector_ids和service_ids都被传递,我需要过滤所有项目,以便只获得与通过id的服务和传递id的扇区有关系的项目。
非常感谢
答案 0 :(得分:1)
请尝试以下查询以获取服务和行业表中的详细信息
Project.joins(:services, :sectors).where("services.id in (?) and sectors.id in (?)", params[:service_ids], params[:sector_ids])