我有一个Rails 4应用程序。用户has_one个人资料。当sby注册他/她已经是用户时,他/她在提交个人资料表格后将只有个人资料。
在我的用户页面上,我想显示所有拥有个人资料的用户。
有几种方法可以显示具有现有个人资料的用户,但我不知道哪个是首选。
在控制器中查询:仅加载具有个人资料的用户
@users = User.joins(:profile).includes(:profile)......
如果在视图中profile.present?
@users = User.includes(:profile).......
<% if user.profile.present? %>
<%= user.profile.first_name %>
...........
也许有更好的方法。
答案 0 :(得分:3)
你为什么不走另一条路?加载所有配置文件,并确保每个配置文件都属于单个用户,因此下面的代码将完成工作,没有任何条件行:
在控制器中:
@profiles = Profile.all
在视图中:
@profiles.each do |profile|
profile.user # it would give you the user, whom it belongs to
end
要避免n+1
次查询,您可以使用Profile.includes(:user).all
来预加载所有用户。