add
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (-1)
- 3.1.0 (0)
- 3.2.1 (-9)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (38)
- 4.1.8 (0)
- 4.2.1 (15)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (16)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (3)
- 6.1.7.7 (0)
- 7.0.0 (13)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
add(attribute, message = :invalid, options = {})
public
Adds message to the error messages and used validator type to details on attribute. More than one error can be added to the same attribute. If no message is supplied, :invalid is assumed.
person.errors.add(:name) # => ["is invalid"] person.errors.add(:name, :not_implemented, message: "must be implemented") # => ["is invalid", "must be implemented"] person.errors.messages # => {:name=>["is invalid", "must be implemented"]} person.errors.details # => {:name=>[{error: :not_implemented}, {error: :invalid}]}
If message is a symbol, it will be translated using the appropriate scope (see generate_message).
If message is a proc, it will be called, allowing for things like Time.now to be used within an error.
If the :strict option is set to true, it will raise ActiveModel::StrictValidationFailed instead of adding the error. :strict option can also be set to any other exception.
person.errors.add(:name, :invalid, strict: true) # => ActiveModel::StrictValidationFailed: name is invalid person.errors.add(:name, :invalid, strict: NameIsInvalid) # => NameIsInvalid: name is invalid person.errors.messages # => {}
attribute should be set to :base if the error is not directly associated with a single attribute.
person.errors.add(:base, :name_or_email_blank, message: "either name or email must be present") person.errors.messages # => {:base=>["either name or email must be present"]} person.errors.details # => {:base=>[{error: :name_or_email_blank}]}