2013-05-09 66 views
0

我有两个型号,用户和角色,红宝石条件验证has_and_belong_to_many

在角色模型:

has_and_belongs_to_many :users 

在用户模式,

has_and_belongs_to_many :roles 
validates_presence_of :name, :if => "roles.map(&:name).include?(\"manager\")" 

我的问题是,我可以为用户的角色添加一个“经理”角色,并且它会通过。我在调音台上时调用

sampleUser.roles << managerRole 

它彻底并保存在数据库中。当我打电话

sampleUser.valid? 

我得到错误的,

我的理解是,因为roles_users是一个单独的表,没有对用户得到更新,因此用户验证将不会被使用。 任何想法如何解决这个问题,并使用户无论去数据库是有效的?

回答