From 86b4aa1175b23deca15981fbc19cf7f02b13b25d Mon Sep 17 00:00:00 2001 From: lulalala Date: Mon, 2 Apr 2018 22:40:09 +0800 Subject: Backward compatibility for errors.collect/select etc. All enumerable methods must go through the `each` so it retain old hash behavior. Revert this after Rails 6.1 in order to speed up enumerable methods. --- activemodel/lib/active_model/errors.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'activemodel') diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb index 9800d9305e..98e16ea455 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?, *(Enumerable.instance_methods(false) - [:to_a, :include?]) + def_delegators :@errors, :size, :clear, :blank?, :empty? LEGACY_ATTRIBUTES = [:messages, :details].freeze @@ -309,7 +309,7 @@ module ActiveModel end def group_by_attribute - group_by(&:attribute) + @errors.group_by(&:attribute) end # Adds +message+ to the error messages and used validator type to +details+ on +attribute+. -- cgit v1.2.3