有许多用户和一位管理员。用户可以创建组并发送/接收请求以加入这些组。该系统工作正常。我现在正在建立管理员创建的独立“超级组”。这些“超级团体”不依赖于请求,他们依靠预约。管理员选择用户,选择一个组,并将所选用户添加到所选组中。我该如何做到这一点?
例如,作为管理员,我想转到用户的个人资料页面,在个人资料页面上有一个下拉列表(只有管理员可访问),并将用户添加到我选择的组中。我怎么做到这一点?通过一种形式?布尔字段?我可以在我的连接模型创建操作中添加一个追加方法(<<&),并为组创建一个select-tag,然后创建一个create-submit按钮?我只需要指向大方向,我认为我可以管理。
值得注意:我正在使用has_many:通过关联捕获关系。管理员有很多“超级组”,可以很好地创建/删除。 “超级组”有很多成员(用户)。我只需要知道如何将用户放入管理组中。
答案 0 :(得分:1)
更新 - 将用户添加到has_many的最佳做法是:通过下拉列表进行关联?
您正在谈论想要从用户的个人资料页面向超级组添加用户。这意味着您要将super_group_id
传递给Rails控制器,找到该超级组,然后将该用户添加到该组。
这是一个选择:
@user = User.find(params[:id]) # or user_id, depending on the controller
@super_group = SuperGroup.find(params[:super_group_id])
@super_group.users << @user
原始答案:
您目前如何创建和删除超级组?我假设你有SuperGroupsController
。实现此目的的一种方法是让子控制器SuperGroups::UsersController
具有相同的RESTful操作(create
,update
等)。这些restful操作处理将用户分配/删除到组。这允许您分离您需要执行的检查,以确保只有管理员正在执行这些操作。
class SuperGroups::UsersController < ApplicationController
before_action :verify_admin # create this method to do the checking
def create
# create a user super group association here
end
def delete
# remove a user from the super group here
end
end
根据DHH,这显然是最佳做法。我在阅读this article之后首先使用了这种方法,并且我发现这种模式非常干净且有用。