mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
after_validation should be called irrespective of the result of validation.
I confirmed that this is the behavior on 2.3.x . [5419 state:resolved] Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
0d0fbf1e64
commit
2ffa50f5a9
3 changed files with 12 additions and 1 deletions
|
@ -40,7 +40,7 @@ module ActiveModel
|
|||
options = args.extract_options!
|
||||
options[:prepend] = true
|
||||
options[:if] = Array.wrap(options[:if])
|
||||
options[:if] << "!halted && value != false"
|
||||
options[:if] << "!halted"
|
||||
options[:if] << "self.validation_context == :#{options[:on]}" if options[:on]
|
||||
set_callback(:validation, :after, *(args << options), &block)
|
||||
end
|
||||
|
|
|
@ -25,9 +25,11 @@ class ValidationsTest < ActiveModel::TestCase
|
|||
r = Reply.new
|
||||
r.title = "There's no content!"
|
||||
assert r.invalid?, "A reply without content shouldn't be saveable"
|
||||
assert r.after_validation_performed, "after_validation callback should be called"
|
||||
|
||||
r.content = "Messa content!"
|
||||
assert r.valid?, "A reply with content should be saveable"
|
||||
assert r.after_validation_performed, "after_validation callback should be called"
|
||||
end
|
||||
|
||||
def test_single_attr_validation_and_error_msg
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
class Topic
|
||||
include ActiveModel::Validations
|
||||
include ActiveModel::Validations::Callbacks
|
||||
|
||||
attr_accessor :title, :author_name, :content, :approved
|
||||
attr_accessor :after_validation_performed
|
||||
|
||||
after_validation :perform_after_validation
|
||||
|
||||
def initialize(attributes = {})
|
||||
attributes.each do |key, value|
|
||||
|
@ -16,4 +20,9 @@ class Topic
|
|||
def condition_is_true_but_its_not
|
||||
false
|
||||
end
|
||||
|
||||
def perform_after_validation
|
||||
self.after_validation_performed = true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue