【问题标题】:How do I show all the Users that are part of a Group?如何显示属于组的所有用户?
【发布时间】:2015-08-17 18:14:58
【问题描述】:

我想要做的是显示作为组成员的用户。我有 3 个模型:用户、成员资格和组。我想显示作为组“成员”的所有用户。我认为我的问题与我的 Groups 控制器有关。

这是每个模型的属性:

create_table "groups", force: :cascade do |t|
  t.string   "name"
end

create_table "memberships", force: :cascade do |t|
  t.integer  "user_id"
  t.integer  "group_id"
end

create_table "users", force: :cascade do |t|
  t.string   "email"
  t.string   "first_name"
  t.string   "last_name"
end

以下是各个模型中的代码:

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :groups, through: :memberships
end

class Group < ActiveRecord::Base
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships
end

这是组控制器中的代码:

class CirclesController < ApplicationController
  def show
    @group = Group.find(params[:id])
    @membership = Membership.where(group_id: @group)
  end
end

这是组视图中的代码

<h1>Group Name: <%= @group.name %></h1>
<div class="row">
   <%= render @memberships %>
</div>

这是部分 _membership.html.erb 中的代码

理想情况下,我想显示用户的名字和姓氏,但现在我至少会很高兴显示成员 User_ID。提前感谢您的帮助!

附带说明一下,如果我将“组视图”中的代码更改为下面的代码,那么我可以看到属于该组成员的 2 个用户

<h1>Group Name: <%= @group.name %></h1>

<div class="container">
    <div class="row">
        <table>

          <thead>
            <tr>
              <th>Member ID</th>
              <th>Group ID</th>
            </tr>
          </thead>

          <tbody>
            <% @membership.each do |member| %>
              <tr>
                <td><%= member.user_id %></td>
                <td><%= member.circle_id %></td>
              </tr>
            <% end %>
        </tbody>

        </table>
    </div>
</div>

【问题讨论】:

  • 您目前的具体斗争是什么?您收到什么错误或您想要解释什么?
  • Group.find(params[:id]).users 应该返回属于该组的用户。从那里您可以轻松循环返回的用户并在您的视图中使用它
  • 感谢@EugZol 和@MrYoshiji!我能够解决向群组中的用户展示的挑战。

标签: ruby-on-rails activerecord associations model-associations partials


【解决方案1】:

控制器

class CirclesController < ApplicationController
  def show
    @group = Group.find(params[:id])
    @members = @group.users # this will find the group users
  end
end

部分

<% @members.each do |member| %>
    <tr>
      <td><%= member.id %></td> // it will show the user ID
      <td><%= @group.id %></td> // I assume your circle_id is the group id
    </tr>
<% end %>

【讨论】:

  • 谢谢@Emu!我现在可以显示任何组的用户。
猜你喜欢
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2011-05-28
  • 2022-10-24
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
相关资源
最近更新 更多