Как управлять несколькими ролями, используя полиморфную ассоциацию в рельсах?
Я использую устройство для аутентификации и нахожу способ выйти из этого.
Могу ли я исследовать одного и того же пользователя дизайна с несколькими ролями? Чтобы он мог войти в систему как Учитель или Родитель оба? В основном он может переключать учетные записи, как несколько ролей.
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.
1 ответ
Вы можете добавить полиморфный 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