Ruby on rails 每次激活记录上都调用after_validation hook吗?
验证后是否每次调用Ruby on rails 每次激活记录上都调用after_validation hook吗?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,验证后是否每次调用钩子,即使验证失败? 我做了两次测试,结果似乎是这样 您是对的,验证失败仍然会触发after_validation回调。这是回调的顺序: 验证前 验证后 在你保存之前 在创建之前 创建后 保存后 在你承诺之后 另外,为了理解更大的事件链:文档中说返回false的“before”回调将停止该链,并停止操作(保存、创建、更新等)。返回false的“after”回调将停止回调链,但不会停止整个操作 如果验证失败,“after_validation”是最后一个要运行的操作,并且所有操作
钩子,即使验证失败?
我做了两次测试,结果似乎是这样 您是对的,验证失败仍然会触发after_validation回调。这是回调的顺序:
如果验证失败,“after_validation”是最后一个要运行的操作,并且所有操作都在那里暂停。如果它们通过了,则所有其他内容都打包在数据库事务中,如果出现问题,则回滚。例如,您的“创建前”可以创建子对象,如果对象创建本身失败,它将安全地撤消。谢谢!你的计划成功了。同样,如果after_验证返回false,它会回滚事务吗?不客气!如果after\u validation返回false,它将在回调之前/之后停止任何进一步的操作,但不会停止事务本身。这可能是因为“before”回调用于检查潜在问题,“after”回调用于在成功完成某个步骤后执行任何需要执行的辅助任务。例如,您可以使用before\u validation为属性设置默认值,如果设置失败,您希望停止整个过程。如果有任何错误,您可以使用after_validation来更新“failed_create”计数器。@MVC,如果这是正确的答案,您为什么接受另一个呢??