使用Active Record Join获取嵌套对象而不包含

时间:2018-05-30 03:28:04

标签: sql ruby-on-rails rails-activerecord

我有一个Active Record查询,它涉及使用SQL语句的JOIN。

TableA.where(:b_id => "123")
      .joins("INNER JOIN TableB ON column1='value1' AND column2 = TableB.id")

其中 column1 column2 属于TableA

我必须使用SQL的原因是因为我没有在两个表之间定义关系(出于其他原因),并且没有找到使用Active Record JOIN <在列上指定ON子句的方法/ p>

由于我没有定义关系,因此我无法使用:includes ,因此无法访问结果中的TableB列。 有没有办法通过修改上述查询来获取TableB的数据?

1 个答案:

答案 0 :(得分:1)

您可以在select查询中添加列。

TableA.select('TableA.*, TableB.column1, TableB.column2')
      .where(:b_id => "123")
      .joins("INNER JOIN TableB ON column1='value1' AND column2 = TableB.id")

注意:您可能无法在rails控制台中看到TableA记录中的列。使用as_json检查您是否在结果中获得了

相关问题