首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3超大型模型验证

Rails 3超大型模型验证
EN

Stack Overflow用户
提问于 2012-07-29 09:28:48
回答 1查看 111关注 0票数 0

我目前正在开发一个Rails3应用程序,它有一个表单,它接受一个父对象,并从一个相当大的数组中选择几个预定义的属性。每个父对象都有几个子对象,根据您在父对象中选择的预定义属性,这些子对象可以具有非常不同的最小-最大值,每个子对象都有自己单独的、通常是唯一的限制。

我很快意识到,验证这些对象将产生一个非常大的模型文件。我想知道是否有合适的方法从模型中删除这种类型的大规模验证(或者至少让模型指向其他地方)。

还有一个更高层次的问题,有发言权是正常的吗?1000行代码来验证对象数据的完整性?

EN

回答 1

Stack Overflow用户

发布于 2012-07-29 09:43:04

1)您可以创建一个自定义的validator类,这涉及到从ActiveModel::Validator中获取并实现一个验证方法,该方法接受验证的记录:

代码语言:javascript
运行
复制
class Report > ActiveRecord::Base
  validates with MyValidator
end

class MyValidator < ActiveModel::Validator
 def validate(record)
    record.errors[:base] = << "Error" unless is_valid(record)
  end
end

2)在rails 3中,有像wel这样的验证宏,这意味着扩展ActiveModel::EachValidator:

代码语言:javascript
运行
复制
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
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11705937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档