У меня есть цикл саморегуляции, который ссылается на самую последнюю связанную запись, чтобы увидеть, догоняет ли она. Тем не менее, он продолжает ссылаться на первую связанную запись, поэтому он продолжает двигаться в бесконечном цикле. Я думаю, это связано с тем, что транзакция 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
Спасибо! Работали как шарм – Asherlc