Rails针对特定值的自定义验证

时间:2013-01-08 21:50:26

标签: ruby-on-rails validation

我有一个用户注册表单,我试图限制为具有特定访问代码的用户创建帐户的能力。我遇到了能够验证特定代码的问题。我已经包含了我能够拼凑的代码,但不适合我。

#new.html.erb

 <%= f.text_field :access, placeholder: "Access Code", required: "required" %>

#user.rb

validate :check_code
def check_code
  errors.add(:base, 'Try another code') unless User.where(:access == "theAccessCode")
end

有人可以建议替代此验证吗?

1 个答案:

答案 0 :(得分:0)

如果有一个正确的访问代码,我想你想要这样的东西:

ACCESS_CODE = 'secretCode'
def check_code
  errors.add(:base, 'Try another code') unless self.access == ACCESS_CODE
end

或者,您的代码可能需要看起来像这样(虽然查询现有用户似乎仍然是错误的):

def check_code
  errors.add(:base, 'Try another code') unless User.where(:access => "theAccessCode").exists?
end