【问题标题】:Role management with cancan and rolify使用 cancan 和 rolify 进行角色管理
【发布时间】:2012-08-09 06:50:15
【问题描述】:

我正在使用 devise-cancan-rolify 设置来处理用户。在注册时,他们会获得一个读者角色。我希望能够从管理界面将他们提升为作家角色。问题是,角色和 users_roles 表的设置方式使这变得相当复杂,特别是因为没有 users_roles 模型而且我相当业余。有没有熟悉这个的人可以在这里指导我正确的方式?

【问题讨论】:

  • 如果我在理解用户以管理员身份登录时想要的问题没有错,他/她应该具有管理员(作家)的能力,而您是否有任何用户表相同?

标签: ruby-on-rails devise roles cancan


【解决方案1】:

我希望你确实看到了 this tutorial 关于设计 + cancan + rolify 设置。

如果您确实按照这些步骤操作,您应该拥有用户、角色和 users_roles 表。你不需要 users_roles 模型。

您需要做的第一件事是确保您可以为用户分配和检查角色。

您应该能够在继续之前运行这些代码(从文档的使用部分,在控制台中尝试这些代码,在任何用户上)

user.add_role "admin"
user.has_role? :admin

如果这对你有用,现在你需要为新用户分配读者角色,最好的地方是 after_create 回调:

class User
  after_create :assign_reader_role
private
  def assign_reader_role
    self.add_role "reader"
  end
end

下一步是从管理界面创建添加/删除作者角色。

只需在您的 UsersController 中添加两个操作

def assign_writer_role
  @user = User.find(params[:id])
  @user.add_role "writer"
  redirect_to @user
end

def remove_writer_role
  @user = User.find(params[:id])
  @user.remove_role "writer"
  redirect_to @user
end

仅此而已。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多