【发布时间】: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