ActiveRecord查询构建

时间:2014-07-06 17:19:08

标签: ruby-on-rails ruby activerecord

我试图建立一个看起来相当复杂的查询,并希望有人能指出我正确的方向,我有点陷入困境。

模型Project有2个has_many关系到模型Sector和模型Service

我想要实现的是:

/projects?service_ids[]=1&sector_ids[]=1&sector_ids[]=2 

基本上我只想获得服务1和第1和第2部分的项目。

我知道由于has_many通过关系,我可以在服务或部门下获得项目。但要做到这一点,我需要首先获取服务/部门。然而,在这种情况下,我觉得我需要根据关系获得项目和过滤器。我只是不确定我是怎么做的。

我希望我能够妥善解释它。如果您需要任何额外信息,请告诉我。

编辑:

澄清一点,如果没有在params上传递service_ids,那么我想检查sector_ids。现在,如果两个sector_ids和service_ids都被传递,我需要过滤所有项目,以便只获得与通过id的服务和传递id的扇区有关系的项目。

非常感谢

1 个答案:

答案 0 :(得分:1)

请尝试以下查询以获取服务和行业表中的详细信息

Project.joins(:services, :sectors).where("services.id in (?) and sectors.id in (?)", params[:service_ids], params[:sector_ids])