2010-07-13 87 views
3

有誰知道是否有可能爲ActiveRecord表連接設置別名?ActiveRecord表別名

喜歡的東西:

User.find(:all, :alias => "Users as u", :joins => "Friends as f", :select => "u.id,f.name") 

任何想法?

回答

7

是的,但是如果覆蓋連接,則需要包含'ON'語句和連接語句。

User.find(:all, :joins => " as u INNER JOIN Friends as f ON f.user_id = u.id", :select => "u.id,f.name") 

或Rails的3+

User.joins("as u INNER JOIN Friends as f on f.user_id = u.id") 
    .select("u.id, f.name") 
    .all 
+2

難道只是我還是這是一個黑客? – MoMolog 2013-12-10 10:34:49

+0

在某種程度上,是的。但通常當你開始重寫假定的行爲時,這是一種黑客行爲。我相信現在有一些arel可用,這會讓這個問題變得不那麼棘手。但據我所知,這仍然是在維護ORM功能的同時執行復雜連接的最簡單方法。請注意,去年我沒有做過大量的開發工作,所以我可能在以後的版本中漏掉了一些東西。 – 2013-12-10 13:55:17