0

我有一个使用 ActiveModel 的类(虽然不是 ActiveRecord)。它表示从远程 Web 服务检索到的 JSON 对象。track 对象有一个 ReportLayout 对象数组,每个 ReportLayout 对象都有一个 slot 数组等。每个模型类都有一些简单的验证器,如 'validates_presence_of' 等。

如何启动级联验证,从跟踪对象开始,遍历每个级别的每个对象,验证它们,然后验证它们的子数组?堆栈有 4 层深,我们很快就会再增加两层。

class Track
  include ActiveModel::Validations
  attr_accessor :name, :report_layouts
  validates_presence_of :name
  validates_length_of :name, :minimum => 4, :maximum => 256
....
end

class ReportLayout
  include ActiveModel::Validations
  attr_accessor :name, :slots, :start_date, :end_date
  validates_presence_of :name
  validates_length_of :name, :minimum => 4, :maximum => 256
....
end

class Slot
...
class SlotModule

谢谢你,拉杰

4

1 回答 1

0

看一下内置的 ActiveRecord 类:AssociatedValidator

http://api.rubyonrails.org/classes/ActiveRecord/Validations/AssociatedValidator.html

此类允许您进行关联/子类验证。您可能需要使用 validates_with 而不是普通的 validates 方法,但它可以很好地完成您所追求的工作。

如果您不想要任何 activerecord 依赖项,您可以将 Validator 类复制到您自己的 Validators 中。

于 2011-11-03T05:50:46.150 回答