将用户分组管理

时间:2016-04-11 15:37:16

标签: ruby-on-rails forms ruby-on-rails-4 activerecord grouping

有许多用户和一位管理员。用户可以创建组并发送/接收请求以加入这些组。该系统工作正常。我现在正在建立管理员创建的独立“超级组”。这些“超级团体”不依赖于请求,他们依靠预约。管理员选择用户,选择一个组,并将所选用户添加到所选组中。我该如何做到这一点?

  • 如何设置它以便管理员可以简单地选择一个用户(在他们的个人资料页面上),选择一个组(最好是从下拉列表中),然后进行关联?

例如,作为管理员,我想转到用户的个人资料页面,在个人资料页面上有一个下拉列表(只有管理员可访问),并将用户添加到我选择的组中。我怎么做到这一点?通过一种形式?布尔字段?我可以在我的连接模型创建操作中添加一个追加方法(<<&),并为组创建一个select-tag,然后创建一个create-submit按钮?我只需要指向大方向,我认为我可以管理。

值得注意:我正在使用has_many:通过关联捕获关系。管理员有很多“超级组”,可以很好地创建/删除。 “超级组”有很多成员(用户)。我只需要知道如何将用户放入管理组中。

1 个答案:

答案 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操作(createupdate等)。这些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之后首先使用了这种方法,并且我发现这种模式非常干净且有用。