这可能很复杂,但我会试一试。 我们有一个Rails应用程序 - 点对点市场,有很多注册用户进行beta测试。用户有很多待售和交换的物品。用户将从其他用户那里获得想要购买或交换用户物品的商品的优惠。其他用户也可能希望这些项目。项目有许多其他用户的喜欢和评论,并且还为每个操作实施了通知。 总之,用户中有很多一对多,多对多和多态关系 项目表。
一些潜入峰值的模型复杂性:
class Item < ActiveRecord::Base
belongs_to :user
has_many :wishes, as: :wishable
has_many :listing_likes, foreign_key: 'listing_id', class_name: 'ListingLike'
问题是,在这种情况下,采用用户帐户删除并保持数据完整性的最佳方法是什么。硬删除和dependent: destroy
不是一个选项,因为它会破坏其他注册用户的用户体验。
唯一想到的是将deleted
布尔字段添加到用户表并在用户被删除时创建检查功能,包括此功能基本上在应用程序的任何位置只是为了确保该用户未被软删除并显示不再可点击的灰色用户名。这种方法可能需要很长时间才能实现,并且很难维护。
任何有关更好方法的建议都将受到赞赏。对于如何以较少痛苦的方式对待它,是否存在通用方法,最佳实践或仅仅是建议?
提前致谢
答案 0 :(得分:0)
我认为你最初想要实现某种形式的“软删除”是要走的路。当您构建复杂的类似网络的数据结构时,您无法(通常也不希望)删除单个数据。
您可能会对自己实施起来有多容易感到惊讶,但您不需要自己实现它:查看Paranoia,它实现了一种相当强大的软删除方法。