我正在使用devise-cancan-rolify设置来处理用户。在注册时,他们会收到读者角色。我希望能够从管理界面将它们提升为Writer角色。问题是,role和users_roles表的设置方式使得这一点变得相当复杂,特别是因为没有users_roles模型而且我非常业余。有没有人熟悉这个可以在这里指导我的正确方法?
答案 0 :(得分:18)
我希望你确实看到this tutorial关于设计+ cancan + rolify设置。
如果您按照这些步骤操作,则应该拥有users,roles和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
这就是全部。
我希望这会有所帮助。