我目前正在开发一个Rails3应用程序,它有一个表单,它接受一个父对象,并从一个相当大的数组中选择几个预定义的属性。每个父对象都有几个子对象,根据您在父对象中选择的预定义属性,这些子对象可以具有非常不同的最小-最大值,每个子对象都有自己单独的、通常是唯一的限制。
我很快意识到,验证这些对象将产生一个非常大的模型文件。我想知道是否有合适的方法从模型中删除这种类型的大规模验证(或者至少让模型指向其他地方)。
还有一个更高层次的问题,有发言权是正常的吗?1000行代码来验证对象数据的完整性?
发布于 2012-07-29 09:43:04
1)您可以创建一个自定义的validator类,这涉及到从ActiveModel::Validator中获取并实现一个验证方法,该方法接受验证的记录:
class Report > ActiveRecord::Base
validates with MyValidator
end
class MyValidator < ActiveModel::Validator
def validate(record)
record.errors[:base] = << "Error" unless is_valid(record)
end
end2)在rails 3中,有像wel这样的验证宏,这意味着扩展ActiveModel::EachValidator:
class Report < ActiveRecord::Base
validates :name :report_like => true
end
class ReportLikeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value["Report"]
record.errors.add attribute, "Does not appear to be a ..."
end
endhttps://stackoverflow.com/questions/11705937
复制相似问题