Ruby on Rails: errors.add_to_base vs. errors.add Ruby on Rails: errors.add_to_base vs. errors.add ruby ruby

Ruby on Rails: errors.add_to_base vs. errors.add


It's worth noting (since this shows up in the search engines, which is how I found it) that this is deprecated. The Rails 3 way of doing it is:

errors[:base] << "Error message"    

or

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

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


A missing genre would be a field error. A base error would be something like an exact duplicate of an existing record, where the problem wasn't tied to any specific field but rather to the record as a whole (or at lest to some combination of fields).


In this example, you can see field validation (team must be chosen). And you can see a class/base level validation. For example, you required at least one method of contact, a phone or an email:

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  endend