关于ruby:Rails控制器索引仅显示具有关联的对象

Rails Controller Index Only Display Objects with Association

我有一个名为User的Rails模型。有两种不同类型的用户。某些用户在单独的表中具有company_profiles

在我的页面视图控制器中,我只想显示具有company_profiles的用户。我也想显示他们的用户信息和他们的company_profile信息。

我不确定如何在控制器和视图中处理此问题。

我的索引方法应该是什么?

1
2
3
def index
  @users = User.scoped # ?????
end

如何在索引页面上遍历具有公司资料的每个用户?

1
2
3
4
5
6
<% @users.each do |user| %>
  <p>
    <%= user.email %>
    <%= user.company_profile.poc_first_name %>
  </p>
<% end %>


现在您提到要只向显示有company_profile的用户显示。因此,在您的控制器方法中,以下应该在索引方法中:

1
2
3
def index
   @users = User.left_outer_joins(:company_profile).where("company_profiles.id is  NOT NULL")
end

然后在您的视图中可以按如下方式获取company_profile \\的poc名字

1
2
3
4
5
<% @users.each do |user| %>
    <p><%= user.email %>
        <%= user.company_profile.poc_first_name %>
    </p>
<% end %>


从数据库加载记录时制作INNER JOIN应该可以:

1
2
3
def index
  @users = User.joins(:company_profile)
end