Rails内连接省略了结果中的列

时间:2014-02-02 16:10:18

标签: sql ruby-on-rails sqlite

我有一张看起来像这样的表

[3] pry(main)> Issue
=> Issue(id: integer, created_at: datetime, updated_at: datetime, 
         release_date: string)

另一个看起来像这样

[7] pry(main)> Tip
 => Tip(id: integer, author: string, code: string, summary: string, 
        description: text, created_at: datetime, updated_at: datetime, 
         issue_id: integer)

问题是当我运行这个sql查询时,省略了一个列,想知道为什么会这样。

 Tip.joins("INNER JOIN issues on issue_id = issues.id").select("tips.summary, 
          issues.*, issues.id")
 Tip Load (0.3ms)  SELECT tips.summary, issues.*, issues.id FROM "tips" 
       INNER JOIN issues on issue_id = issues.id
 => [#<Tip id: 1, summary: "List the leafs in the tree of changes", 
    created_at: "2014-02-02 04:15:19", updated_at: "2014-02-02 04:15:19">]

注意上面生成的sql查询。想知道为什么结果中缺少release_date列。

实际上,我甚至尝试过这种方法,但效果不佳。

Tip.joins("INNER JOIN issues on issue_id = issues.id").select("tips.summary,  
  issues.release_date, issues.id")

1 个答案:

答案 0 :(得分:1)

这不仅仅是结果中隐藏的release_date。您select不属于Tip类成员的任何字段都将被隐藏。

如果您的查询成功,它可以访问release_date

result = Tip.joins("INNER JOIN issues on issue_id = issues.id").select("tips.summary,  
  issues.release_date, issues.id").first
puts result['release_date']