I would like to create a before_save
callback that only gets run if there have been changes to any (but not necessarily all) of the three fields (street, city, state). How do you do this? Thanks
user.rb
class User
before_save :run_test_method, :if => street_changed?
...
end
Option One
You could create a method like:
def ok_to_run_test_method?
street_changed? || something_changed? || something_else_changed?
end
and then use:
before_save :run_test_method, :if => :ok_to_run_test_method?
Note how :ok_to_run_test_method?
is a symbol. Not sure if it was a typo or not but in your question you are actually calling a class method street_changed?
.
Option Two
Modernise your callbacks a little bit and use the block-style syntax:
before_save do
if street_changed? || something_changed? || something_else_changed?
# whatever you currently have in #run_test_method
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With