我有客户和发票。用户可以删除客户,但不能删除发票。
问题是当客户被删除时我不能再做了
invoice.customer.name
因为客户是零。
我在绘图板上有一些解决方案
在发票实例上保存有关客户的一些信息 发票。
不删除客户,但使用布尔值将其隐藏在用户之外 领域。这样客户实例仍然存在。
我知道这个问题可能会被关闭,因为答案可能是固执己见的。 Rails对几乎所有内容都非常自以为是。关于这个问题,我从未见过这样的意见,所以:
在这种情况下,轨道最佳做法是什么?
(如果你有更好的解决方案,我希望看到它)
答案 0 :(得分:2)
答案 1 :(得分:1)
你的第二个解决方案似乎是最好的IMO。
不是删除客户,而是在客户数据库上引入DELETED标志(然后将其添加为default_scope以忽略DELETED = true的客户)
通过这种方式,您可以保持关系完好无损。如果您有大量客户负载,您可能需要考虑归档机制,但我不担心。