Regression with how base errors messages are added to a model. Works correctly for both string error messages and symbol translated messages.

Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
Josh Kalderimis 2010-06-23 14:41:28 +02:00 committed by José Valim
parent 7008911222
commit e8c064bbe0
3 changed files with 20 additions and 5 deletions

View File

@ -16,7 +16,7 @@ module ActiveModel
end
def add_to_base(msg)
ActiveSupport::Deprecation.warn "Errors#add_to_base(msg) has been deprecated, use Errors#[:base] << msg instead"
ActiveSupport::Deprecation.warn "Errors#add_to_base(msg) has been deprecated, use Errors#add(:base, msg) instead"
self[:base] << msg
end

View File

@ -308,7 +308,7 @@ module ActiveModel
defaults.flatten!
key = defaults.shift
value = @base.send(:read_attribute_for_validation, attribute)
value = (attribute != :base ? @base.send(:read_attribute_for_validation, attribute) : nil)
options = {
:default => defaults,

View File

@ -83,10 +83,9 @@ class ValidationsTest < ActiveModel::TestCase
r = Reply.new
r.content = "Mismatch"
r.valid?
r.errors[:base] << "Reply is not dignifying"
r.errors.add(:base, "Reply is not dignifying")
errors = []
r.errors.to_a.each { |error| errors << error }
errors = r.errors.to_a.inject([]) { |result, error| result + [error] }
assert_equal ["Reply is not dignifying"], r.errors[:base]
@ -95,6 +94,22 @@ class ValidationsTest < ActiveModel::TestCase
assert_equal 2, r.errors.count
end
def test_errors_on_base_with_symbol_message
r = Reply.new
r.content = "Mismatch"
r.valid?
r.errors.add(:base, :invalid)
errors = r.errors.to_a.inject([]) { |result, error| result + [error] }
assert_equal ["is invalid"], r.errors[:base]
assert errors.include?("Title is Empty")
assert errors.include?("is invalid")
assert_equal 2, r.errors.count
end
def test_errors_empty_after_errors_on_check
t = Topic.new
assert t.errors[:id].empty?