我在树表中有一个带连接的选择
.joins(module_table_1: [module_table_2: :module_table_2_type])
我想像这样使用Active Record的where
语法:
result = Module::Table_1
.joins(module_table_1: [module_table_2: :module_table_2_type])
.where(number: 6)
.where(module_table_2_type: {cdg_type: [1012, 77]})
如果我这样做,where
由模块名称组成,如下所示:
module_table_2_type.cdg_type in (1012,77)
这是不正确的,正确的是:
table_2_type.cdg_type in (1012,77)
我知道我可以执行此操作.where('table_2_type.cdg_type in (1012,77)')
,只使用字符串语法,但我想要有效的记录方式来正确执行此操作。
有什么想法吗?
答案 0 :(得分:1)
这些不是解决问题的优雅方法。我确信有更好的方法,但试一试:
result = Module::Table_1
.joins("INNER JOIN table2 on table1.table2_id = table2.id INNER JOIN table2_type on table2.id = table2_type.table2_id" )
.where(number: 6)
.where(table_2_type: {cdg_type: [1012, 77]})