Найти пользователей с ролью, прикрепленной к экземпляру

Я работаю над веб-сайтом с 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

Другие вопросы по тегам