34

我试图在创建后调用两种方法,但是将它们放入数组中不起作用......我在 Rails 文档或谷歌中找不到任何东西......有经验的人吗?

after_create [:do_this, :do_that]

不工作

4

4 回答 4

90

无需包围数组中的方法。只需使用:

after_create :do_this, :and_then_this

奖励信息:如果before_*回调返回 false,则取消所有后续回调和相关操作。如果after_*回调返回 false,则取消所有后续回调。回调通常按照定义的顺序运行,但定义为模型上的方法的回调除外,这些方法最后调用。

于 2013-01-18T02:43:12.540 回答
3

您还可以调用单个方法并在该方法上编排顺序。

after_create :process


def process
  do_this
  do_that
  then_this
end

我个人更喜欢这种方法。没有隐藏的魔法。

于 2020-06-15T15:47:33.117 回答
2

为什么要将两个回调方法放入一个数组中?

after_create :do_this, :do_that

于 2013-01-18T02:39:42.883 回答
0

注意,after_action好像是倒置的。


after_action :do_that_after, :do_that_before

当前执行的订单是do_that_beforethendo_that_after

编辑:使用 Rails 6.0.3.3

于 2020-09-23T08:56:26.893 回答