我有两个实体。用户和角色。我正在使用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
#
用户和角色之间存在多对多的关系。 (表roles_users) 对此有何帮助?
由于
答案 0 :(得分:2)
这可能是这样的:
def maximum_numbers_of_admins
if Role.find(:conditions => ['name = ?', 'Administrator']).users.count < 2
return true
else
return false
end
end