2010-07-13 35 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