2012-10-11 4 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