使用AS加入:使用ActiveRecord选择

时间:2009-06-19 13:59:06

标签: sql ruby-on-rails activerecord

我正在尝试这样做

Version.find(:all, :joins=>"JOIN editions ON versions.edition_id=editions.id JOIN products ON editions.product_id=products.id", :select=>"products.name, versions.name AS what")

但ActiveRecord不尊重AS关键字......任何想法?

编辑:由于这两个字段都被称为“名称”,因此它们会发生冲突,因此我只会获取列表中的最后一个字段。

1 个答案:

答案 0 :(得分:1)

来自查询:

产品has_many版本(仅指定此处的关系)

版本has_many版本

foo = Version.find(:all, :joins=>"JOIN editions ON versions.edition_id=editions.id JOIN products ON editions.product_id=products.id", :select=>"products.name, versions.name AS what")
puts foo.inspect 
  

这应该给你一个值:

     

[#<Version name: "foobar1">, #<Version name: "foobar2">]

foo[0].what # Will print the value of 'what' returned by the query

当我写一个类似的查询类似的层次结构时,它给了我完美的结果。如果您收到错误,是否要共享堆栈跟踪?

编辑:foo [0] .attributes将打印{“name”=&gt; “foobar1”,“what”=&gt; “”} 对不起这里的拼写错误。我原本打算说出属性。