0

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

对于系统的几个部分,我需要允许用户在列表中选择一个“默认”项目。

到目前为止,我已经将其作为模型上的“默认”字段实现,并通过唯一性验证来确保只允许一个“默认”。

我的业务规则之一是防止删除“默认”实体。

我可以使用 before_destroy 回调来执行此操作 - 效果很好 - 但我也使用来自https://github.com/radar/paranoia的 paranoia gem来为我提供软删除功能。这会通过更新调用覆盖模型的破坏(改为设置“deleted_at”字段)。使用 before_update 调用并没有给我预期的结果,因为 deleted_at 字段设置得不够早。

如果偏执狂宝石会给我带来麻烦,我很乐意完全删除该要求。软删除是一个很好的功能,而不是现阶段的基本功能。

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

4

1 回答 1

0

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

于 2014-11-21T14:20:26.683 回答