我正在使用 devise-cancan-rolify 设置来处理用户。在注册时,他们会获得一个读者角色。我希望能够从管理界面将他们提升为作家角色。问题是,角色和 users_roles 表的设置方式使这变得相当复杂,特别是因为没有 users_roles 模型而且我相当业余。有没有熟悉这个的人可以在这里指导我正确的方式?
问问题
8585 次
1 回答
18
我希望你确实看到了这个关于 devise + 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
就这样。
我希望这有帮助。
于 2012-08-13T18:00:32.537 回答