gpt4 book ai didi

ruby - Rails 通过用户表单添加 rolify 角色

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:41 24 4
gpt4 key购买 nike

我正在创建一个基于 Devise、CanCan 和 Rolify 的应用程序来处理私有(private)资源。

设计注册已被禁用,因为我不想让用户注册,而我正在创建一个管理界面来添加/编辑用户。

现在我正在处理用户角色。我想允许管理员使用相同的表单创建用户并设置他们的角色。我不知道使用 rolify 是哪种关系,因为我对 rails 和 Ruby 还很陌生,rolify 添加了 rolify 方法而不是更清晰的关系。

我目前需要并且希望每个用户只拥有一个角色。因此,如果有人编辑用户更改角色,我将删除所有 @user.roles,然后设置新角色。

我目前正在使用一个简单的 hack 来让它工作。我在表单中添加了一个选择字段,使用 Role 的集合来提供角色选择。然后在 createupdate 方法中我这样做:

role = params[:user][:role]
params[:user].delete :role
@user = User.new(params[:user])

respond_to do |format|
if @user.save # update_attributes inside update
@user.add_role role
# ...
end
end

如您所见,我没有直接与 Role 模型交互,而是使用提供的 add_role 方法。这也产生了另一个问题,因为我必须检索当前角色以允许更新 View 为选择设置正确的默认值(除了最重要的事实,我不知道如何验证 ONE 角色的存在)。

这将是一个太肮脏的解决方案,所以我想发表一些观点,也许还有一些关于如何做到这一点的建议。我花了一整天的时间来研究这个:-(

如果您需要一些信息,请问我。

附言我正在观看有关嵌套资源的屏幕截图,但在数据库中我可能会看到它正在使用第三个表来跟踪 users_roles 而我不明白该怎么做。谢谢!!

最佳答案

最后我更喜欢放弃 Rolify。这对我来说花费了太多时间,我意识到我需要一个更简单的解决方案,所以我现在在我的模型中使用一个新列来描述用户,并且我还实现了一个类似于 has_role?保持与 CanCan 的兼容性。

这已经解决了很多问题,而且是更常见的解决方案(=更容易获得帮助)。

根据我的经验,我注意到如果在 30 分钟内没有人回答您关于 SO 的问题,那么您的问题就太复杂了。

谢谢大家

关于ruby - Rails 通过用户表单添加 rolify 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com