假設你有兩種類型的消息和聯繫人,它們與Message的 db.ListProperty關鍵字相關。用戶創建消息,將某些聯繫人添加爲收件人,並通過電子郵件發送消息。之後,用戶 刪除作爲 消息收件人的聯繫人實體之一。我們的應用程序應刪除相應的聯繫人 實體,但我們希望保留爲用戶記錄發送的 消息的原始收件人列表。實質上,我們希望消息實體在發送時擁有一個 快照。如果我們天真 刪除聯繫人實體,但我們失去了快照完整性;如果不是, 我們剩下一個無效的密鑰。應用程序引擎:你將如何...快照實體
您將如何處理這種情況, 要麼在控制器邏輯或模型的變化?
class User(db.Model):
email = db.EmailProperty(required=True)
class Contact(db.Model):
email = db.EmailProperty(required=True)
user = db.ReferenceProperty(User, collection_name='contacts')
class Message(db.Model):
recipients = db.ListProperty(db.Key) # contacts
sender = db.ReferenceProperty(User, collection_name='messages')
body = db.TextProperty()
is_emailed = db.BooleanProperty(default=False)
謝謝亞歷克斯! 「軟刪除」策略就是我們所實施的(但我們錯過了這個令人震驚的選擇)。我很高興聽到它得到你的印章! :) 現在我正在考慮更豐富的狀態(例如,is_deleted,is_confirmed,is_preferred等),以及如何耦合和複雜的事情可以得到。 '要解決這個新問題.... – 2010-06-11 09:28:27