Rails 3 - Запрос к базе данных по моделям User и Role в условиях "многие ко многим"
У меня есть две сущности. Пользователь и роль. Я использую Devise и CanCan. Они находятся во многих отношениях.
У пользователя много ролей. Одна из ролей - "Администратор". Я проверяю, является ли мой пользователь администратором, используя:
if (user.role? :administrator) .... #this is already implemented and working
Я должен подтвердить, что никогда не существует более 2 администраторов в одном отделе в системе. Для этой цели я создал собственный метод проверки:
class User < ActiveRecord::Base
validate :maximum_numbers_of_admins if self.role? :administrator
belongs_to :department
def maximum_numbers_of_admins
#Some code here
end
В этом методе я должен посчитать количество пользователей, которые имеют роль администратора (не считая себя). Я не знаю, как установить: условия моего метода find, чтобы получить это число.
Это спецификация класса Role:
# == Schema Information
#
# Table name: roles
#
# id :integer not null, primary key
# name :string(255)
# created_at :datetime
# updated_at :datetime
#
Между пользователями и ролями существует много-много отношений. (Таблица role_users) Любая помощь с этим?
Спасибо
1 ответ
Это может быть что-то вроде этого:
def maximum_numbers_of_admins
if Role.find(:conditions => ['name = ?', 'Administrator']).users.count < 2
return true
else
return false
end
end