aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model
diff options
context:
space:
mode:
authorAttila Domokos <adomokos@gmail.com>2014-08-22 08:08:12 -0500
committerAttila Domokos <adomokos@gmail.com>2014-08-22 08:08:12 -0500
commit1079bb6d7dafa975fbe6b56fbf8824c84e7fca17 (patch)
tree875e2b370351fbc5ecdd8d9219c77820c8fa2c63 /activemodel/lib/active_model
parent36895bd90fe02dbbf2c8461dffb30eb25c7cf3e1 (diff)
downloadrails-1079bb6d7dafa975fbe6b56fbf8824c84e7fca17.tar.gz
rails-1079bb6d7dafa975fbe6b56fbf8824c84e7fca17.tar.bz2
rails-1079bb6d7dafa975fbe6b56fbf8824c84e7fca17.zip
Using `each_with_object` instead of `reduce`
This way no new object allocation is taking place. Thanks @jeremy for the suggestion!
Diffstat (limited to 'activemodel/lib/active_model')
-rw-r--r--activemodel/lib/active_model/errors.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb
index f7126c1eb8..1b46727351 100644
--- a/activemodel/lib/active_model/errors.rb
+++ b/activemodel/lib/active_model/errors.rb
@@ -251,8 +251,8 @@ module ActiveModel
# person.errors.to_hash(true) # => {:name=>["name cannot be nil"]}
def to_hash(full_messages = false)
if full_messages
- self.messages.reduce({}) do |messages, (attribute, array)|
- messages.merge!(attribute => array.map { |message| full_message(attribute, message) })
+ self.messages.each_with_object({}) do |(attribute, array), messages|
+ messages[attribute] = array.map { |message| full_message(attribute, message) }
end
else
self.messages.dup