diff options
author | Godfrey Chan <godfreykfc@gmail.com> | 2013-12-30 22:05:56 -0800 |
---|---|---|
committer | Godfrey Chan <godfreykfc@gmail.com> | 2013-12-30 22:05:56 -0800 |
commit | f3a8be3b8be496cd5de14e9c29de3748432d5da0 (patch) | |
tree | 4579d98d98223e87c958368f5cf16146144a136e /activemodel/lib/active_model/dirty.rb | |
parent | 969a0778cd2fd809a7b4f60c8477bb6d0ac9faf3 (diff) | |
parent | da2b05bb6b713a702eb0420079394bf273f1203e (diff) | |
download | rails-f3a8be3b8be496cd5de14e9c29de3748432d5da0.tar.gz rails-f3a8be3b8be496cd5de14e9c29de3748432d5da0.tar.bz2 rails-f3a8be3b8be496cd5de14e9c29de3748432d5da0.zip |
Merge pull request #13131 from gja/changed-accepts-values
Allows you to check if a field has changed to a particular value
Diffstat (limited to 'activemodel/lib/active_model/dirty.rb')
-rw-r--r-- | activemodel/lib/active_model/dirty.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/dirty.rb b/activemodel/lib/active_model/dirty.rb index 8ccb25c613..58d87e6f7f 100644 --- a/activemodel/lib/active_model/dirty.rb +++ b/activemodel/lib/active_model/dirty.rb @@ -54,6 +54,7 @@ module ActiveModel # person.name = 'Bob' # person.changed? # => true # person.name_changed? # => true + # person.name_changed?(from: "Uncle Bob", to: "Bob") # => true # person.name_was # => "Uncle Bob" # person.name_change # => ["Uncle Bob", "Bob"] # person.name = 'Bill' @@ -149,8 +150,11 @@ module ActiveModel end # Handle <tt>*_changed?</tt> for +method_missing+. - def attribute_changed?(attr) # :nodoc: - changed_attributes.include?(attr) + def attribute_changed?(attr, options = {}) #:nodoc: + result = changed_attributes.include?(attr) + result &&= options[:to] == __send__(attr) if options.key?(:to) + result &&= options[:from] == changed_attributes[attr] if options.key?(:from) + result end # Handle <tt>*_was</tt> for +method_missing+. |