这可能有很多语法错误,因为我还没有测试过,但您可以理解并纠正它。
用户模型
class User < ApplicationRecord
has_many :memberships
has_many :groups, through: :memberships
end
组模型
class Group < ApplicationRecord
has_many :memberships
has_many :users, through: :memberships
end
成员资格模型
class Membership < ApplicationRecord
belongs_to :group
belongs_to :user
end
用户控制器
def edit
@user = User.find_by(id: params[:id])
@allGroups = Group.all
@groupsTheUserIsMember = @user.groups.pluck(:id)
end
def update
@user = User.find_by(id: params[:id])
@user.memberships.destroy_all
#params includes the list of group_ids that will be associated to the user
params[:group_ids].each do |group_id|
membership=Membership.create(user_id: @user.id, group_id: group_id)
end
end
组控制器
def edit
@group = Group.find_by(id: params[:id])
@allUsers = User.all
@usersTheGroupIncludes = @group.users.pluck(:id)
end
def update
@group = Group.find_by(id: params[:id])
@group.memberships.destroy_all
#params includes the list of user_ids that will be associated to the group
params[:user_ids].each do |user_id|
membership=Membership.create(user_id: user_id, group_id: @group.id)
end
end
视图/用户/编辑。html。雇员再培训局
<%= simple_form_for(@user) do |f| %>
<h2>Groups</h2>
<p>Select the groups where the user is member</p>
<table>
<%= render 'groups/groups_header' %>
<%= render partial: 'groups/groups', collection: @allGroups, as: :group, locals: { user_id: @user.id } %>
</table>
<%= f.submit "Update", class: "btn" %>
<% end %>
视图/组/编辑。html。雇员再培训局
<%= simple_form_for(@group) do |f| %>
<h2>Users</h2>
<p>Select the users that belong to the group</p>
<table>
<%= render 'users/users_header' %>
<%= render partial: 'users/users', collection: @allUsers, as: :user, locals: { group: @group.id } %>
</table>
<%= f.submit "Update", class: "btn" %>
<% end %>
视图/组/\u组。html。雇员再培训局
<tr>
<td>
<!-- check box to include or remove the group -->
<% if @usersTheGroupIncludes.include?(user_id) %>
<%= check_box_tag 'user_ids[]', user_id, checked: true %>
<% else %>
<%= check_box_tag 'user_ids[]', user_id %>
<% end %>
</td>
<td>Group: <%= group.name %></td>
</tr>
视图/用户/\u用户。html。雇员再培训局
<tr>
<td>
<!-- check box to include or remove the user -->
<% if @groupsTheUserIsMember.include?(group_id) %>
<%= check_box_tag 'group_ids[]', group_id, checked: true %>
<% else %>
<%= check_box_tag 'group_ids[]', group_id %>
<% end %>
</td>
<td>User: <%= user.name %></td>
</tr>