Activerecord:按祖父母值查找记录

时间:2016-03-10 03:17:02

标签: ruby-on-rails activerecord active-record-query

我有以下型号:

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');

1 个答案:

答案 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')