Rails 活动记录关联查询

Rails Active Record Association Query

我有以下模型:

user.rb

has_many: groups

group.rb

has_many: channels

我想要一个查询 returns 所有频道的 "name" 字段的列表属于用户的所有组。

我下面的内容不起作用,欢迎任何指导。

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

假设:

  1. 频道belongs_to
  2. 你有一个@user

我相信你应该可以做到:

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

所有 Channelname 属性的 return 应该 array(我假设这就是你所说的 list 的意思)属于 @user.

的所有 Group

在您的情况下(在您对原始 post 的评论中指出,这实际上应该是一个编辑),您应该这样做:

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