使用回调进行验证

时间:2015-11-13 18:23:42

标签: ruby-on-rails ruby-on-rails-4 callback rails-activerecord

我想验证我的应用程序中至少有一个用户具有moderator角色。

我有两个回调和一个方法:

before_save    :ensure_one_moderator_always_present, if: :role_changed?
before_destroy :ensure_one_moderator_always_present

def ensure_one_moderator_always_present
  if all_active_moderators.where.not(id: self.id).size =< 1
    errors.add(:content, "There always needs to be at least one manager.")
  end
end

我认为像上面的方法一样添加错误消息会像验证一样停止事务,但事实并非如此。

我做错了什么/我应该如何完成上述工作?

1 个答案:

答案 0 :(得分:0)

errors.add其他为真后返回false

def ensure_one_moderator_always_present
  if all_active_moderators.where.not(id: self.id).size =< 1
    errors.add(:content, "There always needs to be at least one manager.")
    false
  end
  true
end