diff options
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/errors.rb | 2 | ||||
-rw-r--r-- | activemodel/lib/active_model/type/integer.rb | 5 | ||||
-rw-r--r-- | activemodel/test/cases/errors_test.rb | 11 | ||||
-rw-r--r-- | activemodel/test/cases/nested_error_test.rb | 2 |
4 files changed, 18 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb index fd87d3c9bc..d7bcfacce3 100644 --- a/activemodel/lib/active_model/errors.rb +++ b/activemodel/lib/active_model/errors.rb @@ -64,7 +64,7 @@ module ActiveModel include Enumerable extend Forwardable - def_delegators :@errors, :size, :clear, :blank?, :empty?, :uniq! + def_delegators :@errors, :size, :clear, :blank?, :empty?, :uniq!, :any? # TODO: forward all enumerable methods after `each` deprecation is removed. def_delegators :@errors, :count diff --git a/activemodel/lib/active_model/type/integer.rb b/activemodel/lib/active_model/type/integer.rb index 1e1061ff60..e9bbdf4b7b 100644 --- a/activemodel/lib/active_model/type/integer.rb +++ b/activemodel/lib/active_model/type/integer.rb @@ -18,6 +18,11 @@ module ActiveModel :integer end + def deserialize(value) + return if value.blank? + value.to_i + end + def serialize(value) return if value.is_a?(::String) && non_numeric_string?(value) ensure_in_range(super) diff --git a/activemodel/test/cases/errors_test.rb b/activemodel/test/cases/errors_test.rb index 0837e9db96..baaf404f2e 100644 --- a/activemodel/test/cases/errors_test.rb +++ b/activemodel/test/cases/errors_test.rb @@ -44,6 +44,17 @@ class ErrorsTest < ActiveModel::TestCase assert_includes errors, "foo", "errors should include 'foo' as :foo" end + def test_any? + errors = ActiveModel::Errors.new(Person.new) + errors.add(:name) + assert_not_deprecated { + assert errors.any?, "any? should return true" + } + assert_not_deprecated { + assert errors.any? { |_| true }, "any? should return true" + } + end + def test_dup errors = ActiveModel::Errors.new(Person.new) errors.add(:name) diff --git a/activemodel/test/cases/nested_error_test.rb b/activemodel/test/cases/nested_error_test.rb index 5bad100da5..6c2458ba83 100644 --- a/activemodel/test/cases/nested_error_test.rb +++ b/activemodel/test/cases/nested_error_test.rb @@ -5,7 +5,7 @@ require "active_model/nested_error" require "models/topic" require "models/reply" -class ErrorTest < ActiveModel::TestCase +class NestedErrorTest < ActiveModel::TestCase def test_initialize topic = Topic.new inner_error = ActiveModel::Error.new(topic, :title, :not_enough, count: 2) |