【问题标题】:Getting nested objects with Active Record Join without includes使用不包含的 Active Record Join 获取嵌套对象
【发布时间】:2018-05-30 03:28:04
【问题描述】:

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

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

其中column1和column2属于TableA

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

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

【问题讨论】:

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


    【解决方案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 检查您是否在结果中得到了它们

    【讨论】:

    • 谢谢,成功了!没有意识到我可以在选择中使用 TableB 的列。
    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    相关资源
    最近更新 更多