当前位置:  开发笔记 > 编程语言 > 正文

Ruby on Rails:errors.add_to_base与errors.add

如何解决《RubyonRails:errors.add_to_base与errors.add》经验,为你挑选了3个好方法。

我已经读过,errors.add_to_base应该用于与对象相关的错误,而不是特定的属性.我无法概念化这意味着什么.有人可以举例说明我何时想要使用它们?

例如,我有一个乐队模型,每个乐队都有一个流派.当我验证某种类型的存在时,如果该类型丢失,是否应该将错误添加到基类中?

越多的例子越好

谢谢!



1> GSP..:

值得注意的是(因为这显示在搜索引擎中,这就是我发现它的方式),这是不推荐使用的.Rails 3的做法是:

errors[:base] << "Error message"    

要么

errors.add(:base, "Error message")

http://apidock.com/rails/ActiveRecord/Errors/add_to_base
http://apidock.com/rails/v3.2.8/ActiveModel/Errors/add


是否有理由更喜欢铲入数组或"#add"?

2> MarkusQ..:

丢失的类型将是字段错误.基本错误类似于现有记录的完全重复,其中问题不是与任何特定字段相关联,而是与整个记录(或至少某些字段组合)相关联.



3> Jon Kern..:

在此示例中,您可以看到字段验证(必须选择团队).您可以看到类/基本级别验证.例如,您至少需要一种联系方式,电话或电子邮件:

class Registrant
  include MongoMapper::Document

  # Attributes ::::::::::::::::::::::::::::::::::::::::::::::::::::::
  key :name, String, :required => true
  key :email, String
  key :phone, String

  # Associations :::::::::::::::::::::::::::::::::::::::::::::::::::::
  key :team_id, ObjectId
  belongs_to :team
...
  # Validations :::::::::::::::::::::::::::::::::::::::::::::::::::::
  validate :validate_team_selection
  validate :validate_contact_method
...

  private

  def validate_contact_method
    # one or the other must be provided
    if phone.empty? and email.empty?
      errors.add_to_base("At least one form of contact must be entered: phone or email" )
    end
  end

  def validate_team_selection
    if registration_setup.require_team_at_signup
      if team_id.nil?
        errors.add(:team, "must be selected" )
      end
    end
  end
end

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有