aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-06-19 18:18:45 +0200
committerJosé Valim <jose.valim@gmail.com>2010-06-19 18:20:02 +0200
commit0247995d05b3cd3ff5fe32d5fbd8fdd866646909 (patch)
tree83cf6bf49a9f6421100ac765f025c508b6995ad1 /activemodel
parent51739d3228d12907d60fb1b0a2b1ef96c55f66a3 (diff)
downloadrails-0247995d05b3cd3ff5fe32d5fbd8fdd866646909.tar.gz
rails-0247995d05b3cd3ff5fe32d5fbd8fdd866646909.tar.bz2
rails-0247995d05b3cd3ff5fe32d5fbd8fdd866646909.zip
ActiveModel::Validations::Callbacks should not be required by default.
Diffstat (limited to 'activemodel')
-rw-r--r--activemodel/lib/active_model/validations.rb19
-rw-r--r--activemodel/lib/active_model/validations/callbacks.rb17
-rw-r--r--activemodel/test/cases/validations/callbacks_test.rb1
3 files changed, 24 insertions, 13 deletions
diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb
index 31516dc8a9..fa6bd91ff7 100644
--- a/activemodel/lib/active_model/validations.rb
+++ b/activemodel/lib/active_model/validations.rb
@@ -46,7 +46,6 @@ module ActiveModel
module Validations
extend ActiveSupport::Concern
include ActiveSupport::Callbacks
- include ActiveModel::Validations::Callbacks
included do
extend ActiveModel::Translation
@@ -160,6 +159,17 @@ module ActiveModel
@errors ||= Errors.new(self)
end
+ # Runs all the specified validations and returns true if no errors were added
+ # otherwise false. Context can optionally be supplied to define which callbacks
+ # to test against (the context is defined on the validations using :on).
+ def valid?(context = nil)
+ current_context, self.validation_context = validation_context, context
+ errors.clear
+ run_validations!
+ ensure
+ self.validation_context = current_context
+ end
+
# Performs the opposite of <tt>valid?</tt>. Returns true if errors were added,
# false otherwise.
def invalid?(context = nil)
@@ -184,6 +194,13 @@ module ActiveModel
# end
#
alias :read_attribute_for_validation :send
+
+ protected
+
+ def run_validations!
+ _run_validate_callbacks
+ errors.empty?
+ end
end
end
diff --git a/activemodel/lib/active_model/validations/callbacks.rb b/activemodel/lib/active_model/validations/callbacks.rb
index 2c8798bcdd..afd65d3dd5 100644
--- a/activemodel/lib/active_model/validations/callbacks.rb
+++ b/activemodel/lib/active_model/validations/callbacks.rb
@@ -46,19 +46,12 @@ module ActiveModel
end
end
- # Runs all the specified validations and returns true if no errors were added
- # otherwise false. Context can optionally be supplied to define which callbacks
- # to test against (the context is defined on the validations using :on).
- def valid?(context = nil)
- current_context, self.validation_context = validation_context, context
- errors.clear
- @validate_callback_result = nil
- validation_callback_result = _run_validation_callbacks { @validate_callback_result = _run_validate_callbacks }
- (validation_callback_result && @validate_callback_result) ? errors.empty? : false
- ensure
- self.validation_context = current_context
- end
+ protected
+ # Overwrite run validations to include callbacks.
+ def run_validations!
+ _run_validation_callbacks { super }
+ end
end
end
end
diff --git a/activemodel/test/cases/validations/callbacks_test.rb b/activemodel/test/cases/validations/callbacks_test.rb
index 08dcf254c2..67b21eb106 100644
--- a/activemodel/test/cases/validations/callbacks_test.rb
+++ b/activemodel/test/cases/validations/callbacks_test.rb
@@ -3,6 +3,7 @@ require 'cases/helper'
class Dog
include ActiveModel::Validations
+ include ActiveModel::Validations::Callbacks
attr_accessor :name, :history