2

我正在设计一个 REST API,并且想要验证请求参数的存在、长度等。

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

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

然后检查如下参数:

request.valid?

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

如果使用您可以推荐的 ORM(基于依赖项的数量和所需的“验证代码”),您将如何处理?

4

2 回答 2

1

name使用已经为,提供了由 rails 验证age。参考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
于 2012-10-16T07:52:57.923 回答
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 指南

通常,这些验证与ActiveRecordORM 一起使用,但您可以在没有 ActiveRecord 的情况下使用它,正如您在此 ActiveModel RailsCast中看到的那样。因此,您只需包含ActiveModel::Validations.

于 2012-10-16T08:05:27.023 回答