如何显示属于组的所有用户?

时间:2015-08-17 18:14:59

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

我想要做的是显示属于组成员的用户。我有3个型号:用户,会员,&组。我想向所有作为组“成员”的用户显示。我认为我的问题与我的群组控制器有关。

以下是每个模型属性:

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

中的代码

理想情况下,我想显示用户名和&amp;姓氏,但是现在我很乐意至少显示会员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>

1 个答案:

答案 0 :(得分:2)

<强>控制器

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 %>