2015-10-22 106 views
0

我有一個用戶模型和一個PullRequest模型跟蹤Github拉請求。我的用戶模型有:軌道計數器緩存更新記錄更新2

has_many :pull_requests_as_creator, class_name:'PullRequest', foreign_key: 'creator_id', dependent: :destroy has_many :pull_requests_as_merger, class_name:'PullRequest', foreign_key: 'merger_id', dependent: :destroy

和我PullRequest模型有:

belongs_to :creator, class_name: 'User', counter_cache: :pull_requests_created_count 
    belongs_to :merger, class_name: 'User', counter_cache: :pull_requests_merged_count 

如果我先加不merger_id那麼它的罰款,創作者Count獲取由1更新pull請求 - 但如果拉取請求被合併,記錄被merger_id更新並且它的計數跳躍2(創建者計數保持原樣) - 如果我添加最初有合併和創建者的拉請求,則兩者都會增加1一切都很好。

什麼可能導致此問題?我已經嘗試添加一個before_save:回調,首先將計數器減1(我寧願不必這樣做!),但這根本不起作用。

回答

0

我仍然不確定爲什麼會出現這種情況 - 我想也許是因爲計數器功能可能會綁定到after_save和after_destroy回調函數,但並不能解釋是什麼使它增加了兩次。

我已經使用了after_apdate回調,做

after_update :update_counter 

    def update_counter 
    User.reset_counters(self.merger.id, :pull_requests_as_merger) 
    end 

希望這有助於其他人有類似的問題。