diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2019-07-21 19:34:59 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-21 19:34:59 -0300 |
commit | ef4d3215b1198c456780b8d18aa62be7795b9b8c (patch) | |
tree | f7c57fc651f4f1e67e41cf1c7c9928a520d695e9 | |
parent | a390001bbe482619e3a00186d23421e93f8e8c39 (diff) | |
parent | ab21db050d9cd64628768af3fa4b650550667550 (diff) | |
download | rails-ef4d3215b1198c456780b8d18aa62be7795b9b8c.tar.gz rails-ef4d3215b1198c456780b8d18aa62be7795b9b8c.tar.bz2 rails-ef4d3215b1198c456780b8d18aa62be7795b9b8c.zip |
Merge pull request #36721 from Edouard-chin/ec-errors-each
Fix deprecation on `AM::Errors` when each is called indirectly
-rw-r--r-- | activemodel/lib/active_model/errors.rb | 2 | ||||
-rw-r--r-- | activemodel/test/cases/errors_test.rb | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb index 22839bd9fb..5628a59845 100644 --- a/activemodel/lib/active_model/errors.rb +++ b/activemodel/lib/active_model/errors.rb @@ -220,7 +220,7 @@ module ActiveModel # # then yield :name and "must be specified" # end def each(&block) - if block.arity == 1 + if block.arity <= 1 @errors.each(&block) else ActiveSupport::Deprecation.warn(<<~MSG) diff --git a/activemodel/test/cases/errors_test.rb b/activemodel/test/cases/errors_test.rb index d66d6ceff0..60b20ab59f 100644 --- a/activemodel/test/cases/errors_test.rb +++ b/activemodel/test/cases/errors_test.rb @@ -44,6 +44,14 @@ class ErrorsTest < ActiveModel::TestCase assert_includes errors, "foo", "errors should include 'foo' as :foo" end + def test_each_when_arity_is_negative + errors = ActiveModel::Errors.new(Person.new) + errors.add(:name, :blank) + errors.add(:gender, :blank) + + assert_equal([:name, :gender], errors.map(&:attribute)) + end + def test_any? errors = ActiveModel::Errors.new(Person.new) errors.add(:name) |