gpt4 book ai didi

ruby-on-rails - 我应该如何使用 Rails 实现多个模型的身份验证/授权?

转载 作者:行者123 更新时间:2023-12-04 12:42:44 25 4
gpt4 key购买 nike

我的应用中有 3 类用户:俱乐部、个人和管理员 .每一个都非常不同,这意味着它们几乎不共享任何属性,除了身份验证数据,这就是为什么我宁愿使用 3 种不同型号 .另外,我想为所有这些类型的用户启用单一身份验证模型,使用 授权逻辑 , 并使用 处理授权灿灿 .

最初我想到了这样的事情。

class User < ActiveRecord::Base
# This class has the email and password in order to be authenticated with Authlogic
end

对于每一个我都会
class Club < User end
class Admin < User end

但是随后 User 表将被其他类型用户的所有列弄乱,并且它们将保持为空。

另一种选择是
class User < ActiveRecord::Base
# This class has the email and password in order to be authenticated with Authlogic
belongs_to :role, :polymorphic => true
end

对于每种类型的用户,都会分配一个角色。问题是访问方法的属性类似于 user.role.logo .我想解决这个问题的一种方法是使用委托(delegate),但我仍然不知道这是否是最好的选择。

问题是,您建议我如何实现这一点?最好的方法是什么?

最佳答案

就像您建议的那样,我将创建一个用户模型来处理身份验证。然后,您可以在用户模型和您的角色模型之间创建一对一的多态关系。您的用户模型必须包含 role_type(字符串)和 role_id(整数)属性。

用户.rb

class User < ActiveRecord::Base
belongs_to :role, :polymorphic => true
end

管理员.rb
class Admin < ActiveRecord::Base
has_one :role
end

您可以测试用户的角色是什么类并访问其属性。例如:
User.first.role.is_a? Admin
=> true
User.first.role.last_name
=> "Smith"

关于ruby-on-rails - 我应该如何使用 Rails 实现多个模型的身份验证/授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915543/

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