2009-06-19 61 views
1
選擇

我試圖做到這一點加入使用如:用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關鍵字...任何想法?

編輯:由於這兩個字段被稱爲「名稱」,他們正在碰撞,所以我只得到列表中的最後一個。

+0

只是跑了一些非常相似的東西,爲我工作。你能更詳細地描述這個問題嗎? ActiveRecord是否將products.name加載到versions.name中? version.first.what不包含versions.name中的值嗎? – Ben 2009-06-19 14:45:09

+0

嗨,本,感謝您的評論。我的誤解是IRB(或者Rails控制檯,或者兩者兼而有之)......事情。首先,確實包含了我需要的東西。然而,thing.first並沒有在控制檯中顯示它......仍在學習。再次感謝。 – 2009-06-20 02:07:37

回答

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」=>「foobar1」,「what」=>「」}} 對不起,這裏錯字。我本來想說的是屬性。