Найти пользователей с ролью, прикрепленной к экземпляру
Я работаю над веб-сайтом с 3 типами пользователей и "делом", в котором будет пользователь каждого типа. Вместо того, чтобы определять модели фасилитатора, клиента и диагноста, я решил определить их как роли с помощью Rolify. Все еще не уверен, что это лучшее решение.
Во всяком случае, у меня есть 2 модели: User Case
class Case < ApplicationRecord
resourcify
end
class User < ApplicationRecord
rolify strict: true
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :role
after_create :assign_default_role
def assign_default_role
self.add_role "newuser" if self.roles.blank?
end
end
3 роли: ведущий диагност клиента
Для каждого случая я буду определять одну и только одну роль.
Чтобы экспериментировать, я создал пользователя и кейс и дал этому пользователю роль "фасилитатор" для этого кейса.
Я пытаюсь извлечь пользователя с ролью "фасилитатор" из дела, но я не могу сделать это, используя:
Case.first.roles.where(name: "facilitator").first
Case.first.find_roles(:facilitator)
Я не смог найти решение, прочитав Rolify Wiki.
1 ответ
Я думаю, что вы ищете что-то вроде этого:
user= User.with_role(:facilitator).first
Я предполагаю, что у вас есть таблица соединений для ролей, которые, возможно, называются:users_roles