我想我是密集這裏,是因爲我不斷收到一個錯誤stack too deep
...如何避免圓形環
我有一個Child
和Parent
關係對象。我想兩件事情發生:
- ,如果你嘗試更新
Child
,除非它有一個Parent
協會 - 如果你創建一個
Parent
,然後將其連接到Child
不能更新其status_id
到1
,那麼Child
的狀態應該自動設置爲1
。
這裏的Parent
協會如何得到補充說:
parent = Parent.new
if parent.save
child.update_attributes(parent_id:1)
end
我對Child
模型這些回調:
validate :mark_complete
after_update :set_complete
# this callback is here because there is a way to update the Child model attributes
def mark_complete
if self.status_id == 1 && self.parent.blank?
errors[:base] << ""
end
end
def set_complete
if self.logistic.present?
self.update_attribute(:status_id, 1)
end
end
上面的代碼其實並不有效,因爲它是2分貝命中當理想情況下它會是1,一次完成。但我發現它太耗費腦筋,不知道爲什麼......我不確定爲什麼它甚至沒有工作,因此甚至無法考慮將其作爲一個單獨的數據庫交易。
例
希望這有助於澄清。想象一下Charge
模型和Item
模型。每個Item
有一個Charge
。 Item
也有一個屬性paid
。兩件事情:
如果更新
Item
,你不能更新paid
到true
直到Item
已與Charge
對象如果通過更新鏈接
Charge
對象到Item
被相關charge_id
屬性Item
,那麼代碼應該爲您節省時間並自動設置爲paid
爲true
爲什麼你不直接循環孩子,直到父母結束? – 13aal