如何防止删除"默认"实体?

时间:2014-11-21 14:14:25

标签: ruby-on-rails ruby soft-delete

我目前正在使用最新的测试版Rails 4.2构建原型应用程序。

对于系统的多个部分,我需要允许用户选择"默认"列表中的项目。

到目前为止,我已将此作为"默认"模型上的字段,以及唯一性验证,以确保只有一个"默认"允许的。

我的一个业务规则是阻止删除"默认"实体。

我可以使用before_destroy回调来做到这一点 - 这很好 - 但我也使用https://github.com/radar/paranoia的偏执宝石来给我软删除功能。这将通过更新调用覆盖模型的销毁(设置" deleted_at"字段)。使用before_update调用并不能给我预期的结果,因为deleted_at字段没有及早设置。

如果妄想宝石会给我带来麻烦,我很乐意完全取消这个要求。软删除是一件好事,而不是现阶段的必备功能。

有没有人对如何实现这个逻辑有任何建议,同样重要的是测试它是否按预期工作?

1 个答案:

答案 0 :(得分:0)

如果设置了模型的deleted_at字段,您可以将其设置为一个非常简单的验证,以阻止设置default