我目前正在使用 Rails 4.2 的最新 beta 版本构建原型应用程序。
对于系统的几个部分,我需要允许用户在列表中选择一个“默认”项目。
到目前为止,我已经将其作为模型上的“默认”字段实现,并通过唯一性验证来确保只允许一个“默认”。
我的业务规则之一是防止删除“默认”实体。
我可以使用 before_destroy 回调来执行此操作 - 效果很好 - 但我也使用来自https://github.com/radar/paranoia的 paranoia gem来为我提供软删除功能。这会通过更新调用覆盖模型的破坏(改为设置“deleted_at”字段)。使用 before_update 调用并没有给我预期的结果,因为 deleted_at 字段设置得不够早。
如果偏执狂宝石会给我带来麻烦,我很乐意完全删除该要求。软删除是一个很好的功能,而不是现阶段的基本功能。
有没有人对我如何实现这个逻辑有任何建议,同样重要的是测试它是否按预期工作?