最好的Ruby库来验证请求参数

时间:2012-10-16 07:38:52

标签: ruby validation

我正在设计REST API,并希望验证请求参数的存在,长度等。

例如,我想验证以下内容:

  • 是请求中提供的“姓名”
  • 是'name'< 200个字符
  • 'age'是否具有数值
  • 是提供的任何未知参数
  • 如果'name'不存在,则必须提供
  • 'customer_id'

然后检查这样的参数:

request.valid?

我正在考虑使用DataMapper(或Virtus + Aequitas)或类似的东西。但DataMapper或其他ORM只提供了我不需要的功能。

您如何处理此问题以及是否使用可以推荐的ORM(基于依赖项数量和所需的“验证代码”)?

2 个答案:

答案 0 :(得分:1)

已使用已为nameage的rails验证提供。 ref this

  validates :name, presence: true, :length => { :maximum => 200 }
  validates :age,  allow_blank: true, :numericality => {:greater_than => 18, :less_than => 100}

使用以下

进行自定义验证
validate :some_validation_method

def some_validation_method


end

答案 1 :(得分:1)

您可以使用ActiveModel::Validations

它允许大量验证,例如接受,关联,确认,排除,格式等。例如:

class Person
  include ActiveModel::Validations

  validates :name, :surname, presence: true
  validates :city, length: { minimum: 5 }
  validates :age, numericality: { greater_than: 18 }
end

# Example: 
p = Person.new
p.valid? # => false

我建议你看看ActiveRecord Validations & Callbacks Rails guide

通常,这些验证与ActiveRecord ORM一起使用,但您可以在没有ActiveRecord的情况下使用它,因为您可以看到in this ActiveModel RailsCast。 因此,您只需要包含ActiveModel::Validations