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>