1

(轨道上的红宝石)

我有一个注册表单,可以将表单中的数据保存到一个表和另一个表中。在用户注册后,我使用钩子、" after_save :process_field_to_another_table" 和 " after_create :send_registration_email" 向用户发送电子邮件。

不幸的是,“ after_create”在“ after_save”之前工作,但我需要:send_registration_email在保存过程发生后工作。我本来想:process_field_to_another_table在“ after_create”中运行,但比它连续运行两次,这没有多大意义。

在这种情况下,有什么想法可以指示“ ”在“”after_save之前运行吗?after_create还是有更好的建议?我试过“ before_save”和“ before_create”,但它似乎没有正确处理。

有什么建议吗?

4

2 回答 2

3

你可以把两个钩子合二为一。

after_save :foo

def foo
  process_field_to_another_table
  send_registration_email if id_changed?  # id will change only for new record.
end
于 2013-04-12T03:53:29.470 回答
2

after_create您可以使用和after_update回调的组合来分隔调用。

after_create :process_field_to_another_table, :send_registration_email
after_update :process_field_to_another_table

这种方式,process_field_to_another_table在之前被调用send_registration_email

于 2013-04-12T03:49:56.107 回答