From 73e2dbe651566dbda20002c6184e334c471e1195 Mon Sep 17 00:00:00 2001 From: Lihan Li Date: Mon, 11 Apr 2016 17:46:34 -0400 Subject: set default parameter to nil to speed up attribute_changed? MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Benchmark results: Warming up -------------------------------------- old code 32.176k i/100ms new code 34.837k i/100ms Calculating ------------------------------------- old code 1.595M (± 3.5%) i/s - 7.947M new code 1.942M (± 3.9%) i/s - 9.685M --- activemodel/lib/active_model/dirty.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'activemodel') diff --git a/activemodel/lib/active_model/dirty.rb b/activemodel/lib/active_model/dirty.rb index 6e2e5afd1b..fad4de9df5 100644 --- a/activemodel/lib/active_model/dirty.rb +++ b/activemodel/lib/active_model/dirty.rb @@ -174,10 +174,12 @@ module ActiveModel end # Handles *_changed? for +method_missing+. - def attribute_changed?(attr, options = {}) #:nodoc: + def attribute_changed?(attr, options = nil) #:nodoc: result = changes_include?(attr) - result &&= options[:to] == __send__(attr) if options.key?(:to) - result &&= options[:from] == changed_attributes[attr] if options.key?(:from) + if options + result &&= options[:to] == __send__(attr) if options.key?(:to) + result &&= options[:from] == changed_attributes[attr] if options.key?(:from) + end result end -- cgit v1.2.3