Rails在连接表的字段中

时间:2017-07-24 14:40:37

标签: ruby-on-rails activerecord

我在树表中有一个带连接的选择

.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)'),只使用字符串语法,但我想要有效的记录方式来正确执行此操作。

有什么想法吗?

1 个答案:

答案 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]})