如何在rails模型中添加自定义验证器

时间:2010-12-07 08:34:11

标签: ruby-on-rails

我知道ActiveRecord提供了一些像validates_uniqueness_of validates_size_of这样的宏 为用户输入做一些验证。但我想知道是否有可能提供 一些回调类似验证方法,用作模型级别的cutomised验证方法。例如, 我想检查输入字符串只有从'a'到'h'的字母,有趣吗?但它不时发生。

2 个答案:

答案 0 :(得分:1)

rails guides有一个很好的例子,说明如何创建自己的自定义验证器。如果你使用的是Rails 3,你可以这样做:

class Foo < ActiveRecord::Base
  validate :from_a_to_h

  # Use the name of your attribute in place of :input and input.
  def from_a_to_h
    errors.add(:input, "must contain only letters from a to h") if input =~ /[i-Z]+/
  end
end

答案 1 :(得分:1)

您可以使用以下方式创建自定义函数:

validate :custom_function

def custom_function
  ...
end

您还可以使用正则表达式来验证字符串。对于你的例子,我会使用:

validates_format_of :attribute, :with => /^[a-h]+$/