(Ruby on rails)
我有一个注册表,它将数据从表单保存到一个表和另一个表。我使用钩子、"after_save :process_field_to_another_table“和"after_create :send_registration_email”在用户注册后向他们发送电子邮件。
不幸的是,"after_create“在"after_save”之前起作用,但我需要:send_registration_email在保存过程发生后才起作用。我正在考虑在"after_create“中运行:process_field_to_another_table,但是它连续运行两次,这没有多大意义。
你知道在这种情况下,我如何指示"after_save“在"after_create”之前运行吗?或者有什么更好的建议?我尝试了"before_save“和"before_create",但它似乎不能正确处理。
有什么建议吗?
发布于 2013-04-12 11:53:29
你可以把这两个钩子放在一起。
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-12 11:49:56
您可以通过组合使用after_create和after_update回调来分隔调用。
after_create :process_field_to_another_table, :send_registration_email
after_update :process_field_to_another_table这样,在send_registration_email之前调用process_field_to_another_table。
https://stackoverflow.com/questions/15962431
复制相似问题