我很抱歉,如果已经提出过类似的问题,我找不到任何相同的问题。
因此,有人可以告诉我为什么before_save
特别是有条件的可以被认为是坏的吗?
before_save :something, if: Proc.new { self.abc == 'hello' }
因此,我理解为什么验证有时会更好,但是我不明白的是为什么有些人认为回调可能是一件坏事,它们迫使你只编写验证但从不使它们成为条件。< / p>
我个人认为可能存在更大问题,因为此更改可能会影响现有条目,因此如果您计划仅修改数据,则可以实现条件验证程序或为if
提供before_save
在某些情况下。为什么有些人认为这不好?有人可以帮我吗?
非常感谢!
答案 0 :(得分:1)
我认为before_save
或before_validation
的唯一缺点是当它被理解或使用不正确时
before_save
和before_validation
不同,开发人员应该了解某些回调意图用作before_save
,有些回调用作before_validation
除了这些之外,我没有看到before_save
有任何问题,因为它可以清除和分解代码的逻辑,并且允许可重用性,特别是如果你有模型的子类。
我对此事的直接想法......
答案 1 :(得分:0)
使用回调是标准的Rails练习!如果使用得当,在保持数据完整性方面,它们是很好的DRY助手。回调大量用于数据格式化用户输入(例如从手机号码字段中删除空格或破折号),其中通过验证回复错误会使用户感到沮丧。使用验证来处理无法预测的案例或者其他地方无法预测的数据以及其他地方的回调(例如在保存之前对电子邮件进行下载)。