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?