我有以下型号:
var NODE_MODULES_PATH = process.env.NODE_PATH || 'C:/Users/../AppData/Roaming/npm/node_modules/';
global.NODE_PATH = NODE_MODULES_PATH;
我想找到所有孩子,其中一个孩子的grand_parent的值等于TRUE,但是我无法正确使用语法。类似的东西:
var mysql = require(NODE_PATH + 'mysql');
答案 0 :(得分:2)
您需要加入两者之间的模型才能引用GrandParent
,因此您必须先加入Parent
,然后再过滤。
Child.joins(parent: [:grand_parent]).where('grand_parents.value is TRUE')
只是为了验证,值是grand_parents
表中的实际列,还是只想获得已关联children
的所有grand_parents
?
如果是的话......
Child.joins(parent: [:grand_parent])
应该有效
如果你想让所有没有关联grand_parent
对象的孩子可以做到
Child.joins(:parent).where('not exists(select 1 from grand_parents where grand_parents.id = parents.grand_parent_id')
如果像grand_parent_parents
表
Child.joins(:parent).where('not exists(select 1 from grand_parent_parents where grand_parent_parents.parent_id = parent.id')