验证rails中字符串的奇点

时间:2012-04-04 18:31:42

标签: ruby-on-rails-3 validation

任何人都知道validates_signularity_of :string是否有任何内置于轨道中的内容?我找不到任何类似的文档,但只是想检查一下。我想验证用户可以输入的字符串总是一个单数字。

1 个答案:

答案 0 :(得分:1)

一种方法是利用singularize方法。

如果将字符串单一化产生相同的字符串,则该字符串已经是单数。否则,它是复数。

如下所示的自定义验证器可能有效:

class SingularValidator < ActiveModel::EachValidator
  def validate_each(object, attribute, value)
    unless value.to_s.singularize == value
      object.errors[attribute] << (options[:message] || "is not singular") 
    end
  end
end

然后在你的模型中:

validates :column_name, :singular => true

信用:   从Ryan的Railscast#211

中提取的自定义验证器的基本结构