Индекс контроллера Rails только отображает объекты с ассоциацией - PullRequest
1 голос
/ 20 сентября 2019

У меня есть модель Rails под названием User.Есть два разных типа пользователей.У некоторых пользователей company_profiles в отдельной таблице.

В моем контроллере для просмотра моей страницы я хотел бы отображать только тех пользователей, у которых есть company_profiles.Я также хотел бы отобразить информацию об их пользователях и информацию о company_profile.

Я не уверен, как обработать это в моем контроллере и просмотреть.

Что должно быть в моем методе index?

def index
  @users = User.scoped # ?????
end

А как мне пройти через каждого пользователя с профилем компании на странице индекса?

<% @users.each do |user| %>
  <p>
    <%= user.email %>
    <%= user.company_profile.poc_first_name %>
  </p>
<% end %>

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Теперь вы упомянули, что хотите показывать пользователей только для которых существует company_profile.Таким образом, в вашем методе контроллера следующее должно быть в методе индекса

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

Тогда в ваших представлениях вы можете получить имя poc company_profile следующим образом

<% @users.each do |user| %>
    <p><%= user.email %>
        <%= user.company_profile.poc_first_name %>
    </p>
<% end %>
1 голос
/ 20 сентября 2019

Создание INNER JOIN при загрузке записей из базы данных должно работать:

def index
  @users = User.joins(:company_profile)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...