Ruby on rails 使用RoleModel gem:如何从用户中删除以前分配的所有角色

Ruby on rails 使用RoleModel gem:如何从用户中删除以前分配的所有角色,ruby-on-rails,authorization,cancan,role,Ruby On Rails,Authorization,Cancan,Role,在我的RoR应用程序中,我使用角色模型和CanCan gems。用户没有默认角色。 在将角色分配给用户之前,角色掩码为空。我可以分配多个角色。但我无法删除所有角色,并再次将角色掩码设为零。最后分配的角色仍将存在 我需要删除以前分配的角色,全部!!有没有可能???如果您想将单个用户角色设置为零,那么在您的角色中修改操作是否像 user.roles_mask = nil 拯救 如果您想使所有角色掩码为nil,那么您可以通过编写一个rake任务来实现这一点。 差不多 task :make_role

在我的RoR应用程序中,我使用角色模型和CanCan gems。用户没有默认角色。 在将角色分配给用户之前,角色掩码为空。我可以分配多个角色。但我无法删除所有角色,并再次将角色掩码设为零。最后分配的角色仍将存在
我需要删除以前分配的角色,全部!!有没有可能???

如果您想将单个用户角色设置为零,那么在您的角色中修改操作是否像

 user.roles_mask = nil
拯救

如果您想使所有角色掩码为nil,那么您可以通过编写一个rake任务来实现这一点。 差不多

task :make_roles_nil => :environment do
User.all.each do |user|
user.roles_mask = nil
user.save
end
end
将它放在lib/tasks目录下一个名为user.rake的文件中 然后跑

bundle exec rake user:make_roles_nil RAILS_ENV = YOUR ENVIRONMENT(development or production)

如果您想将单用户角色设置为nil,那么在您的角色中修改操作

 user.roles_mask = nil
拯救

如果您想使所有角色掩码为nil,那么您可以通过编写一个rake任务来实现这一点。 差不多

task :make_roles_nil => :environment do
User.all.each do |user|
user.roles_mask = nil
user.save
end
end
将它放在lib/tasks目录下一个名为user.rake的文件中 然后跑

bundle exec rake user:make_roles_nil RAILS_ENV = YOUR ENVIRONMENT(development or production)

谢谢实际上,我想在个人用户上,在前端上做这件事。在控制台上,我只需选择一个用户并将角色设置为\u mask=nil。在前端,当我选中一个复选框时,角色被分配,但当我取消选中角色\u掩码值不是nil…确定在角色模型gem中没有默认选项这样做。如果没有选中角色复选框,您可以手动选中它,然后使角色\u掩码=nil,或者您可以添加一个标志并使用角色复选框添加一个复选框,说“清空所有角色”并将其签入控制器。如果设置了th标志,则将角色掩码设为nil。也就是说,通过直接在SQL中执行更新,而不是将每个记录加载到内存中,您可以使rake任务更快:User.update_all(“roles_mask=null”)谢谢!实际上,我想在个人用户上,在前端上做这件事。在控制台上,我只需选择一个用户并将角色设置为\u mask=nil。在前端,当我选中一个复选框时,角色被分配,但当我取消选中角色\u掩码值不是nil…确定在角色模型gem中没有默认选项这样做。如果没有选中角色复选框,您可以手动选中它,然后使角色\u掩码=nil,或者您可以添加一个标志并使用角色复选框添加一个复选框,表示“清空所有角色”并将其签入控制器。如果设置了th标志,则将角色掩码设为nil。也就是说,通过直接在SQL中执行更新,而不是将每个记录加载到内存中,您可以更快地完成rake任务:User.update\u all(“roles\u mask=null”)