出于某种原因,在after_create
中触发后,Sidekiq为我提供了0条查询记录。
但是,如果process
中包含sleep 1
,则它总是给我正确的值(1条记录)。
这到底是怎么回事?
型号:
after_create :after_create
def after_create
AwardsWorker.perform_async(user_id)
end
工人:
def perform(user_id)
user = User.find(user_id)
AwardEngine.added_shows_awards(user)
end
AwardEngine:
def self.added_shows_awards(user)
count = user.followings(true).count #(true) to avoid AR caching
puts "count: #{count}" #this is mostly 0! even if the database has 1 record
end
答案 0 :(得分:4)
您需要使用after_commit,如wiki中所述: