gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中使用多态关联管理多个角色?

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

我正在使用设计进行身份验证并找到摆脱这种情况的方法。

我可以探索具有多个角色的同一个设计用户吗?这样他就可以同时以教师或家长的身份登录?。基本上他可以像多个角色一样切换帐户。

class User < ActiveRecord
belongs_to :loginable, polymorphic: true
end

class Parent < ActiveRecord
has_one :user, as: :loginable
end

class Teacher < ActiveRecord
has_one :user, as: :loginable
end


for eg: loginable_type: "Parent", loginable_id: 123

如果用户以“教师”及其 ID 身份登录,我想找到一种更改上述字段的方法。

最佳答案

您可以添加多态 has_many关系:

class CreateUserRoles < ActiveRecord::Migration
def change
create_table :user_roles do |t|
t.integer :role_id
t.integer :user_id
t.string :role_type # stores the class of role
t.timestamps
end
add_index :user_roles, [:role_id, :role_type]
end
end

class AddActiveRoleToUser < ActiveRecord::Migration
def change
change_table :user_roles do |t|
t.integer :active_role_id
t.timestamps
end
end
end

class User < ActiveRecord
has_many :roles, polymorphic: true
has_one :active_role, polymorphic: true


def has_role? role_name
self.roles.where(role_type: role_name).any?
end
end

关于ruby-on-rails - 如何在 Rails 中使用多态关联管理多个角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499608/

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