2012-10-11 83 views
0

我有一個自引用循環引用最近的關聯記錄來查看它是否被追上。但是,它始終引用第一個關聯的記錄,所以它會一直處於無限循環。我認爲這是因爲ActiveRecord事務在循環中保持運行,所以它永遠不會停止並自我更新。Force update ActiveRecord association

在繼續之前,有什麼辦法強制模型重置自己嗎?

這裏是我的模型(不是說異常提升只是爲了驗證我們是否已經實際進入下一個記錄)。

class RecurringRule < ActiveRecord::Base 
    belongs_to :organization 
    has_one :last_run, :class_name => "Transaction", :order => 'id DESC' 
    has_many :transactions 

    attr_accessible :period, :last_run_id 

    after_create :destroy_if_period_empty 

    def destroy_if_period_empty 
    if !period? 
     self.destroy 
    end 
    end 

    def recur 
    @count = @count || 0 
    if @count > 0 then raise last_run.id.to_s end 
    if last_run.created_at.to_date.advance(period.pluralize.to_sym => 1) >= Date.today 
     new = Transaction.new({ 
     amount: last_run.amount, 
     person_id: last_run.person_id, 
     organization_id: last_run.organization_id, 
     recurring_rule_id: last_run.recurring_rule_id 
     }) 
     new.save! 
     @count += 1 
     self.recur 
    end 
    return @count 
    end 
end 

回答

1

您可以嘗試

Model.association(force_reload=true) 

here參考(它也是有很多關係有效)

+0

謝謝!像魅力一樣工作 – Asherlc