String conditionals on ActiveRecord callbacks
I’ve got a model for push notifications that uses Parse.com, and it sends the data to Parse on a callback:
before_create :send_to_parse
The problem is, I have a whole bunch of specs that create push notifications, and I don’t want any sent to Parse during testing. Now, I don’t have the Parse credentials accessible within the test environment, but that throws an error when it tries to send to Parse. So, what I really want is to just send to Parse when we’re not testing.
Turns out this is dead simple, albeit a little strange at first:
before_create :send_to_parse, unless: "Rails.env.test?"
I’ve used conditionals with symbolized method names before, but the string bit threw me off. However, it’s simple valid Ruby code, you can put it in a string and it will be evaluated as such.
This is straight from the docs, and I thought it was super cool.