Ruby on Rails中ActiveRecord表别名如何设置才能在查询时更高效?
- 内容介绍
- 文章标签
- 相关推荐
本文共计274个文字,预计阅读时间需要2分钟。
ActiveRecord中设置表连接别名的方法如下:
使用`.joins()`方法连接表时,可以指定别名。例如:
rubyUser.find(:all, :alias=> Users as u, :joins=> Friends as f, :select=> u.id, f.name)
这里,`Users as u`表示将`Users`表别名为`u`,`Friends as f`表示将`Friends`表别名为`f`。
如果你想对查询结果进行进一步的处理或格式化,可以使用任何你喜欢的Ruby方法。例如:
rubyUser.find(:all, :alias=> Users as u, :joins=> Friends as f, :select=> u.id, f.name).map do |user| { user_id: user.id, friend_name: user.f.name }end
有谁知道是否有可能为ActiveRecord表连接设置别名?就像是:
User.find(:all, :alias => "Users as u", :joins => "Friends as f", :select => "u.id,f.name")
有任何想法吗?
是的,但如果覆盖连接,则需要包含“ON”语句和join语句.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
本文共计274个文字,预计阅读时间需要2分钟。
ActiveRecord中设置表连接别名的方法如下:
使用`.joins()`方法连接表时,可以指定别名。例如:
rubyUser.find(:all, :alias=> Users as u, :joins=> Friends as f, :select=> u.id, f.name)
这里,`Users as u`表示将`Users`表别名为`u`,`Friends as f`表示将`Friends`表别名为`f`。
如果你想对查询结果进行进一步的处理或格式化,可以使用任何你喜欢的Ruby方法。例如:
rubyUser.find(:all, :alias=> Users as u, :joins=> Friends as f, :select=> u.id, f.name).map do |user| { user_id: user.id, friend_name: user.f.name }end
有谁知道是否有可能为ActiveRecord表连接设置别名?就像是:
User.find(:all, :alias => "Users as u", :joins => "Friends as f", :select => "u.id,f.name")
有任何想法吗?
是的,但如果覆盖连接,则需要包含“ON”语句和join语句.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

