Making updates in after_create callbacks

Hi,

I’m seeing weird behavior on my live sites (can’t seem to duplicate in
development). Using Ruby 1.8.6 on solaris with postgresql.

I often times have code that looks like:

class Order
belongs_to :user
after_create :make_super_user
def make_super_user
if user.orders.count >= 50
user.make_super!
end
end
end

class User
has_many :orders
def make_super!
update_attribute :super, true
end
end

That sort of thing, where there’s some check in an after_create
callback that does a count and then modifies another object. However,
these callbacks don’t seem to be running correctly. Sometimes Users
aren’t made super after 50 orders. Or, in this example:

class QuestionAnswer
belongs_to :question
after_create :rotate_question
def rotate_question
Question.rotate! if question.question_answers.count >= 100
end
end

Sometimes Question.rotate! is called if
question.question_answers.count is less than 100. It’s very weird.
Anyone see anything like this?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs