覆盖Activerecord保存方法是否好?

时间:2013-09-30 11:16:37

标签: ruby-on-rails ruby ruby-on-rails-3

我想覆盖ActiveRecord保存方法,以便从事务中带走一些东西。覆盖方法是个好主意吗?

1 个答案:

答案 0 :(得分:6)

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

然而:这是红宝石!这意味着如果你真的需要,你可以做任何你想做的事。如果回调由于某种原因不适合您,请继续并覆盖它。覆盖它的理由的好例子是添加额外的参数(不是真的推荐可能破坏其他方法)或者如果需要那些额外的选项(这非常简洁!)