我有一个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的数据?
答案 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
检查您是否在结果中获得了