Revert the change at ActiveModel::Errors#add_on_blank and fix in the
right place. The EachValidator#validate already handle :allow_blank and :allow_nil, correctly. Closes #8622. Fix #8621.
This commit is contained in:
parent
d4c30a0226
commit
78fd14c8de
@ -322,15 +322,9 @@ def add_on_empty(attributes, options = {})
|
||||
# person.errors.messages
|
||||
# # => {:name=>["can't be blank"]}
|
||||
def add_on_blank(attributes, options = {})
|
||||
return if options[:allow_blank]
|
||||
|
||||
Array(attributes).each do |attribute|
|
||||
value = @base.send(:read_attribute_for_validation, attribute)
|
||||
if value.nil?
|
||||
add(attribute, :blank, options) unless options[:allow_nil]
|
||||
elsif value.blank?
|
||||
add(attribute, :blank, options)
|
||||
end
|
||||
add(attribute, :blank, options) if value.blank?
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -3,8 +3,8 @@ module ActiveModel
|
||||
|
||||
module Validations
|
||||
class PresenceValidator < EachValidator # :nodoc:
|
||||
def validate(record)
|
||||
record.errors.add_on_blank(attributes, options)
|
||||
def validate_each(record, attr_name, value)
|
||||
record.errors.add(attr_name, :blank, options) if value.blank?
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -41,7 +41,7 @@ def test_accepts_array_arguments
|
||||
end
|
||||
|
||||
def test_validates_acceptance_of_with_custom_error_using_quotes
|
||||
Person.validates_presence_of :karma, :message => "This string contains 'single' and \"double\" quotes"
|
||||
Person.validates_presence_of :karma, message: "This string contains 'single' and \"double\" quotes"
|
||||
p = Person.new
|
||||
assert p.invalid?
|
||||
assert_equal "This string contains 'single' and \"double\" quotes", p.errors[:karma].last
|
||||
@ -72,9 +72,9 @@ def test_validates_presence_of_for_ruby_class_with_custom_reader
|
||||
end
|
||||
|
||||
def test_allow_nil
|
||||
Topic.validates_presence_of(:title, :allow_nil => true)
|
||||
Topic.validates_presence_of(:title, allow_nil: true)
|
||||
|
||||
t = Topic.new(:title => "something")
|
||||
t = Topic.new(title: "something")
|
||||
assert t.valid?, t.errors.full_messages
|
||||
|
||||
t.title = ""
|
||||
@ -90,9 +90,9 @@ def test_allow_nil
|
||||
end
|
||||
|
||||
def test_allow_blank
|
||||
Topic.validates_presence_of(:title, :allow_blank => true)
|
||||
Topic.validates_presence_of(:title, allow_blank: true)
|
||||
|
||||
t = Topic.new(:title => "something")
|
||||
t = Topic.new(title: "something")
|
||||
assert t.valid?, t.errors.full_messages
|
||||
|
||||
t.title = ""
|
||||
|
Loading…
Reference in New Issue
Block a user