验证功能不工作轨道4

时间:2014-05-16 18:33:29

标签: ruby-on-rails validation ruby-on-rails-4 rspec devise

我正在使用设计用户模型(使用rails 4)。这是我目前的用户模型。我想要的是一个验证,它不允许:super_admin在以下情况下为true:admin为false。以下是该模型的当前版本:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable

  validate :if_super_admin_then_must_be_admin

  def if_super_admin_then_must_be_admin
    if :super_admin && !:admin
      errors.add(:admin, "can't be false if :super_admin is true.")
    end
  end
end

我的rspec测试失败,如果:super_admin为true并且:admin为false,则模型可以有效。我使用控制台仔细检查了它,所以问题不在规范中。

1 个答案:

答案 0 :(得分:0)

修正了它:

def if_super_admin_then_must_be_admin
  if self.super_admin? && !self.admin?
    errors.add(:admin, "can't be false if :super_admin is true.")
  end
end