BPruvost
BPruvost

Reputation: 503

before_validation not being called?

I'm having a weird issue for which I can't find a logical explanation.

I'm investigating a bug and put some logging in place (through Rollbar) so I can see the evolution some instances of one of my models.

Here is what I got:

class Connexion < ActiveRecord::Base
    before_validation :save_info_in_rollbar
    after_save :save_info_in_rollbar

    def save_info_in_rollbar
      Rollbar.log("debug", "Connexion save", :connexion_id => self.id, :connexion_details => self.attributes)
    end
end

Now I am getting loads of data in rollbar (pretty much 2 rows for every time a connexion is created/updated). But the weird thing is the following: for some connexions (=> exactly the ones with faulty data which I am investigating), I am getting no data at all!

I don't get how it's possible for a connexion to be created and persisted to the DB, and not have any trace of the before_validation logging. It looks like the callback is not called, but unless I'm mistaken, it's supposed to be the first one in the callback order => what could prevent it from being called?

EDIT >> Copy and paste from a reply, might be relevant: There are 3 cases in which a connexion is created or updated, and thoses cases are :

Upvotes: 4

Views: 3172

Answers (3)

BPruvost
BPruvost

Reputation: 503

Sorry about the stupid question guys, the explanation was that we were having 2 apps working on the same database, and the modification was made by the other app (which of course was not sending the Rollbar updates).

Sometimes the toughest issues have the most simple answers haha

Upvotes: 1

Dan Myasnikov
Dan Myasnikov

Reputation: 158

Firstly, you don't need self in instance methods, as the scope of the method is instance.

Secondly, you need to check, how are you saving the data to the database. You can skip callbacks in Rails: Rails 3 skip validations and callbacks

Thirdly, double check the data.

Upvotes: 0

Andrew Marshall
Andrew Marshall

Reputation: 96914

The only cases in which the callback won’t be run are:

But: I might be missing a case. Also, I’m assuming there isn’t a bug in ActiveRecord/ActiveModel causing this.

Upvotes: 4

Related Questions