我有以下两种模式:
class Inquiry < ActiveRecord::Base
has_one :offer
around_save :check_status
def check_status
status_changed = self.status_changed?
yield
if status_changed
.
.
.
end
end
end
class Offer < ActiveRecord::Base
belongs_to :inquiry
around_save :check_status
def check_status
status_changed = self.status_changed?
yield
if self.inquiry && status_changed
status = ...
self.inquiry.update_attribute('status', status)
end
end
end
并非每个商品都必然属于查询,但是当我尝试保存商品时,会触发循环,其中商品check_status
会尝试更新查询状态,并且出于某种原因yield
调查check_status
中的1}}尝试自动保存优惠,再次触发查询状态更新,导致stack level too deep
错误。
我尝试在autosave: false
之后添加has_one :offer
,但它没有用。什么可能导致这个问题的想法以及如何解决它?
答案 0 :(得分:0)
如果将来遇到类似的问题,我最终会像Nafaa建议的那样改变模型所有权方向,并解决了这个问题。