Rails-как выбрать из нескольких таблиц

Я новичок в Ruby, поэтому я не знаю, как выбирать данные по таблицам соединения. В моей базе 3 таблицы: users, roles, а также client_organizations,

users(id,email)
client_organizations(id,name)
roles(id,user_id,client_organization_id,role)

Я хочу показать данные так:

User_Email                       Role
                            RoleA for [ClientA]
user1@gmail.com             RoleB for [ClientB]
                            RoleC for [ClientB]

user2@gmail.com             RoleB for [ClientC]

В Ruby, как я могу получить данные из базы данных, как описано выше?

1 ответ

Решение

Предполагая, что ваши модели настроены правильно, вы можете использовать ваши ассоциации. Это ни в коем случае не оптимизировано, а просто выложено, чтобы показать логику. Вы захотите загрузить ваши ассоциации для оптимизации базы данных.

контроллер

@users = User.all

Посмотреть

<table>
  <tr><th>email</th><th>role</th></tr>
  <% @users.each do |user| %>

    <tr>
       <td><%= user.email %></td>
       <td>
          <% user.roles.each do |role| %>
             <%= "#{role.role} for [#{role.client_organization.name}]" %><br>
          <% end %>
       </td>
    </tr>
   <% end %>
  </table>
Другие вопросы по тегам