我正在尝试这样做
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关键字......任何想法?
编辑:由于这两个字段都被称为“名称”,因此它们会发生冲突,因此我只会获取列表中的最后一个字段。
答案 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; “”} 对不起这里的拼写错误。我原本打算说出属性。