好的,所以,如果我执行 User.joins(:session_users)
,我只会获得用户表的属性。
如何以 ActiveRecord 方式获取两个表的属性,即,不是 SQL?
编辑一个
好的,根据第一个答案,我正在尝试显示它。
所以,这是在Users Controller中写的方法
def blah
@users = User.includes(:session_users)
@users.each do |user|
user.session_users
end
end
然后我在用户 View 中有这个 blah.html.erb
<%= @users.session_users %>
这在路由部分:
match "/users/blah" => "users#blah"
最佳答案
我认为您需要includes
而不是joins
。参见 http://railscasts.com/episodes/181-include-vs-joins获取更多信息。这应该为两者获取列,
users = User.includes(:session_users)
users.each do |user|
user.session_users
end
请注意,这仍然会执行 2 个 SQL 查询。
编辑
更新后的答案假定 user
has_many :session_users
路线:
# config/routes.rb
get '/users/blah' => 'users#blah'
Controller :
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def blah
@users = User.includes(:session_users)
end
end
查看:
# app/views/users/blah.html.erb
<% @users.each do |user| %>
<%= user.name %> // assumes user has a name attribute
<% user.session_users.each do |session_user| %>
<%= session_user.attributes %> // prints all the attributes
<%= session_user.created_at %> // assumes the user has a created_at attribute
<% end %>
<% end %>
关于sql - ActiveRecord 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22900272/