Change the deprecation messages to show the preferred way to work with

ActiveModel::Errors
This commit is contained in:
Rafael Mendonça França 2015-02-20 20:57:56 -02:00
parent 08d9c7532c
commit f55bfe7260
4 changed files with 12 additions and 12 deletions

View File

@ -49,7 +49,7 @@ behavior out of the box:
send("#{attr}=", nil)
end
end
person = Person.new
person.clear_name
person.clear_age
@ -132,7 +132,7 @@ behavior out of the box:
"Name"
end
end
person = Person.new
person.name = nil
person.validate!
@ -216,10 +216,10 @@ behavior out of the box:
{Learn more}[link:classes/ActiveModel/Validations.html]
* Custom validators
class HasNameValidator < ActiveModel::Validator
def validate(record)
record.errors.messages[:name] << "must exist" if record.name.blank?
record.errors.add(:name, "must exist") if record.name.blank?
end
end

View File

@ -114,9 +114,9 @@ module ActiveModel
# person.errors.get(:age) # => []
def get(key)
ActiveSupport::Deprecation.warn(<<-MESSAGE.squish)
ActiveModel::Errors#get is deprecated and will be removed in Rails 5.1
ActiveModel::Errors#get is deprecated and will be removed in Rails 5.1.
To achieve the same use messages[:#{key}]
To achieve the same use model.errors[:#{key}].
MESSAGE
messages[key]
@ -129,9 +129,9 @@ module ActiveModel
# person.errors.get(:name) # => ["can't be nil"]
def set(key, value)
ActiveSupport::Deprecation.warn(<<-MESSAGE.squish)
ActiveModel::Errors#set is deprecated and will be removed in Rails 5.1
ActiveModel::Errors#set is deprecated and will be removed in Rails 5.1.
To achieve the same use messages[:#{key}] = "#{value}"
Use model.errors.add(:#{key}, #{value.inspect}) instead.
MESSAGE
messages[key] = value
@ -162,9 +162,9 @@ module ActiveModel
# person.errors[:name] # => ['must be set']
def []=(attribute, error)
ActiveSupport::Deprecation.warn(<<-MESSAGE.squish)
ActiveModel::Errors#[]= is deprecated and will be removed in Rails 5.1
ActiveModel::Errors#[]= is deprecated and will be removed in Rails 5.1.
To achieve the same use messages[:#{attribute}] << "#{error}"
Use model.errors.add(:#{attribute}, #{error.inspect}) instead.
MESSAGE
messages[attribute.to_sym] << error

View File

@ -15,7 +15,7 @@ module ActiveModel
# class MyValidator < ActiveModel::Validator
# def validate(record)
# if some_complex_logic
# record.errors.messages[:base] << "This record is invalid"
# record.errors.add(:base, "This record is invalid")
# end
# end
#

View File

@ -1078,7 +1078,7 @@ Another way to do this is using `[]=` setter
```ruby
class Person < ActiveRecord::Base
def a_method_used_for_validation_purposes
errors.messages[:name] << "cannot contain the characters !@#%*()_-+="
errors.messages.add(:name, "cannot contain the characters !@#%*()_-+=")
end
end