虽然这是一项简单的任务,但我在处理这个问题时遇到了一些困难:
希望每当保存模型时更新其中一个属性,因此在模型中有一个回调函数:
after_save :calculate_and_save_budget_contingency
def calculate_and_save_budget_contingency self.total_contingency = self.budget_contingency + self.risk_contingency self.save # => 这也不起作用.... self.update_attribute :budget_contingency, (self.budget_accuracy * self.budget_estimate) / 1 end
然后Web服务器会返回以下消息:ActiveRecord :: StatementInvalid(SystemStackError:stack level too deep: INSERT INTO“versions”
这基本上告诉我,模型中存在无限循环的保存,after_save
然后我们再次保存模型……这又进入了保存
模型的另一个循环
目前卡在这个模型属性计算的阶段。如果有人遇到过这个问题,并且有一个很好的nifty / rails解决方案,请在下面留言,谢谢。