From 2e70f44123cb6fab9124b52a6cc02ff453b8397f Mon Sep 17 00:00:00 2001 From: Henrik Nyh Date: Sun, 23 Mar 2014 12:09:55 +0100 Subject: ActiveRecord/ActiveModel '#validate' alias for 'valid?' It's unintuitive to call '#valid?' when you want to run validations but don't care about the return value. The alias in ActiveRecord isn't strictly necessary (the ActiveModel alias is still in effect), but it clarifies. --- activemodel/lib/active_model/validations.rb | 4 ++++ activemodel/test/cases/validations_test.rb | 9 +++++++++ 2 files changed, 13 insertions(+) (limited to 'activemodel') diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb index e9674d5143..cf97f45dba 100644 --- a/activemodel/lib/active_model/validations.rb +++ b/activemodel/lib/active_model/validations.rb @@ -285,6 +285,8 @@ module ActiveModel # Runs all the specified validations and returns +true+ if no errors were # added otherwise +false+. # + # Aliased as validate. + # # class Person # include ActiveModel::Validations # @@ -319,6 +321,8 @@ module ActiveModel self.validation_context = current_context end + alias_method :validate, :valid? + # Performs the opposite of valid?. Returns +true+ if errors were # added, +false+ otherwise. # diff --git a/activemodel/test/cases/validations_test.rb b/activemodel/test/cases/validations_test.rb index 4ea5670d32..6a74ee353d 100644 --- a/activemodel/test/cases/validations_test.rb +++ b/activemodel/test/cases/validations_test.rb @@ -295,6 +295,15 @@ class ValidationsTest < ActiveModel::TestCase assert auto.valid? end + def test_validate + auto = Automobile.new + + assert_empty auto.errors + + auto.validate + assert_not_empty auto.errors + end + def test_strict_validation_in_validates Topic.validates :title, strict: true, presence: true assert_raises ActiveModel::StrictValidationFailed do -- cgit v1.2.3