3

我想重写一个 ActiveRecord 保存方法,以便从事务中带出一些东西。重写该方法是个好主意吗?

4

1 回答 1

7

在大多数情况下,答案是否定的,因为您应该使用许多回调函数:before_save、after_save、before_create 和 after_create。所有这些回调都将要保存的记录(或已保存的记录)作为参数,因此您可以对它们做任何您想做的事情。更重要的是,如果这些回调中的任何一个引发异常或返回 false,则整个事务将被回滚。

然而:这是红宝石!这意味着如果你真的需要,你可以做任何你想做的事。如果由于某种原因回调对您来说还不够,请继续并覆盖它。重写它的一个很好的例子是添加额外的参数(不推荐因为可能会破坏其他方法)或在需要时处理额外的选项(这非常整洁!)

于 2013-09-30T11:46:00.343 回答