Rails Active Record Association Query - PullRequest
       9

Rails Active Record Association Query

0 голосов
/ 30 января 2019

У меня есть следующие модели, которые выглядят так:

user.rb

has_many: groups

group.rb

has_many: channels

Я хочу запрос, который возвращает списокполей «name» для всех каналов принадлежат всем группам, принадлежащим пользователю.

То, что у меня есть ниже, не работает, любое руководство приветствуется.

Group.all.where("user_id = ?", 1).joins(:channels)

1 Ответ

0 голосов
/ 30 января 2019

Предполагается:

  1. Канал belongs_to Группа
  2. У вас есть @user

Я считаю, что вы должны быть в состоянии:

Channel.where(group: @user.groups).pluck(:name)

Который должен возвращать array (что, я полагаю, означает, что вы подразумеваете под list) атрибута name всех Channel, принадлежащих всем Group, которые принадлежат@user.

В вашем случае (указанном в вашем комментарии к исходному сообщению, которое действительно должно было быть отредактировано), вы должны сделать:

<% @user_groups.each do |group| %>
  <tr>
    <td>
      <%= group.name %>
    </td>
    <td>
      <%= group.channels.pluck(:name) %>
    </td>
  </tr>
<% end %>
...