aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorBogdan Gusiev <agresso@gmail.com>2016-04-13 02:03:51 +0300
committerBogdan Gusiev <agresso@gmail.com>2016-04-13 02:03:51 +0300
commitafb1f32e7994ed0ba1163672343e3dd59a845d42 (patch)
tree4d0d416b0ea95c6ad32e03a05008e5a07ebb2e69 /activemodel
parentba194d4230c97197567e5c0f71fca47e40035783 (diff)
downloadrails-afb1f32e7994ed0ba1163672343e3dd59a845d42.tar.gz
rails-afb1f32e7994ed0ba1163672343e3dd59a845d42.tar.bz2
rails-afb1f32e7994ed0ba1163672343e3dd59a845d42.zip
Use keyword arguments to cleanup without droping performance
Diffstat (limited to 'activemodel')
-rw-r--r--activemodel/lib/active_model/dirty.rb16
1 files changed, 8 insertions, 8 deletions
diff --git a/activemodel/lib/active_model/dirty.rb b/activemodel/lib/active_model/dirty.rb
index 9aca5f2c90..38c0ab6c32 100644
--- a/activemodel/lib/active_model/dirty.rb
+++ b/activemodel/lib/active_model/dirty.rb
@@ -119,6 +119,9 @@ module ActiveModel
extend ActiveSupport::Concern
include ActiveModel::AttributeMethods
+ OPTION_NOT_GIVEN = Object.new # :nodoc:
+ private_constant :OPTION_NOT_GIVEN
+
included do
attribute_method_suffix '_changed?', '_change', '_will_change!', '_was'
attribute_method_suffix '_previously_changed?', '_previous_change'
@@ -174,13 +177,10 @@ module ActiveModel
end
# Handles <tt>*_changed?</tt> for +method_missing+.
- def attribute_changed?(attr, options = nil) #:nodoc:
- result = changes_include?(attr)
- if options
- result &&= options[:to] == __send__(attr) if options.key?(:to)
- result &&= options[:from] == changed_attributes[attr] if options.key?(:from)
- end
- !!result
+ def attribute_changed?(attr, from: OPTION_NOT_GIVEN, to: OPTION_NOT_GIVEN) # :nodoc:
+ changes_include?(attr) &&
+ (to == OPTION_NOT_GIVEN || to == __send__(attr)) &&
+ (from == OPTION_NOT_GIVEN || from == changed_attributes[attr])
end
# Handles <tt>*_was</tt> for +method_missing+.
@@ -189,7 +189,7 @@ module ActiveModel
end
# Handles <tt>*_previously_changed?</tt> for +method_missing+.
- def attribute_previously_changed?(attr, options = {}) #:nodoc:
+ def attribute_previously_changed?(attr) #:nodoc:
previous_changes_include?(attr)
end