我一直在寻找一个简单的Ruby输入验证库。一切似乎都指向ActiveRecord(或类似的)。我没有使用Rails,我在没有ORM的情况下使用Sinatra。验证用户输入的最佳方法是什么(不直接与模型层绑定)?简单的事情,如“字符串长度”,“是数字”等。最好有一个很好的机制来声明错误消息。
答案 0 :(得分:9)
您可以使用Rails 3 RC中的ActiveModel :: Validations:
require 'active_model'
# this appears to be a bug in ActiveModel - it uses this, but does not require it
require 'active_support/core_ext/hash'
class Model
include ActiveModel::Validations
attr_accessor :name
validates_presence_of :name
end
m = model.new
puts m.valid? # false
m.name = "John Doe"
puts m.valid? # true
答案 1 :(得分:0)
我写了一个我的自我http://rubygems.org/gems/validates_simple,我希望它会有所帮助。它验证哈希值,这是Web应用程序中最常见的输入结构。
答案 2 :(得分:0)
我也写了一篇,因为我对现有的解决方案感到沮丧。您可以尝试https://github.com/Goltergaul/definition,它可以进行类似于干燥验证的各种验证,但不会造成混淆