Ruby on rails 在联接的表上指定条件,如何定义和嵌套条件?
其结果是有许多装置 我想查找包含Ruby on rails 在联接的表上指定条件,如何定义和嵌套条件?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,其结果是有许多装置 我想查找包含tool\u id为123的安装和tool\u id为456的安装的所有结果 我知道下面给出了安装tool\u id的123的所有结果: Result.includes(:installations).where(installations: {tool_id: 123}) 因此,我尝试将另一个链接到,但没有成功: Result.includes(:installations).where(installations: {tool_id: 123}).where
tool\u id
为123
的安装和tool\u id
为456
的安装的所有结果
我知道下面给出了安装tool\u id
的123
的所有结果:
Result.includes(:installations).where(installations: {tool_id: 123})
因此,我尝试将另一个链接到,但没有成功:
Result.includes(:installations).where(installations: {tool_id: 123}).where(installations: {tool_id: 456})
正确执行此操作的最佳方法是什么?结果。包括(:安装)。其中('installations.tool_id in(?),[123456])我先查找一个,然后查找另一个,然后使用&
。它奏效了,但我认为这不是最好的办法
Result.includes(:installations).where(installations: {tool_id: 123}) & Result.includes(:installations).where(installations: {tool_id: 456})
我得到了未知列“installations.tool\u id”
。在installations
下嵌套tool_id
时,该语法正确吗?结果包括(:installations)。其中('installations.tool_id in(?)[123456])如果安装表中存在tool_id列,则该语法正确。您想说工具id列是结果表的一部分吗?如果是,则用results.tool_id替换installation.tool_id,安装表中存在tool_id
。我认为问题可能是结果上没有installations
列。安装时只有一个result\u id
,而result有许多安装。尽管它适用于result.includes(:安装)。其中(安装:{tool\u id:123})
,因为ActiveRecord?