aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/errors.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activemodel/lib/active_model/errors.rb')
-rw-r--r--activemodel/lib/active_model/errors.rb11
1 files changed, 7 insertions, 4 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb
index b4660f3587..d943e044a7 100644
--- a/activemodel/lib/active_model/errors.rb
+++ b/activemodel/lib/active_model/errors.rb
@@ -61,6 +61,8 @@ module ActiveModel
class Errors < ActiveSupport::OrderedHash
include DeprecatedErrorMethods
+ CALLBACKS_OPTIONS = [:if, :unless, :on, :allow_nil, :allow_blank]
+
# Pass in the instance of the object that is using the errors object.
#
# class Person
@@ -183,11 +185,12 @@ module ActiveModel
def add(attribute, message = nil, options = {})
message ||= :invalid
- validation_conditionals = [:if, :unless, :on]
-
- message = generate_message(attribute, message, options.except(*validation_conditionals)) if message.is_a?(Symbol)
+ if message.is_a?(Symbol)
+ message = generate_message(attribute, message, options.except(*CALLBACKS_OPTIONS))
+ elsif message.is_a?(Proc)
+ message = message.call
+ end
- message = message.call if message.is_a?(Proc)
self[attribute] << message
end