保存之后,创建之后(订单)(RubyonRails)
(Ruby on rails) 我有一个注册表,它将数据从该表单保存到一个表和另一个表。我使用hooks、“保存之后,创建之后(订单)(RubyonRails),ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,(Ruby on rails) 我有一个注册表,它将数据从该表单保存到一个表和另一个表。我使用hooks、“在保存后:处理字段到另一个表””和“在创建后:发送注册邮件””在用户注册后向用户发送邮件 不幸的是,“after\u create”在“after\u save”之前起作用,但我需要:在保存过程发生后发送注册电子邮件。我正在考虑在“之后创建””中运行:将\u字段\u处理到另一个\u表中,但它会连续运行两次,这没有多大意义 在本例中,我如何指示“在保存后””在“在创建后””之前运行?还有更好
在保存后:处理字段到另一个表”
”和“在创建后:发送注册邮件”
”在用户注册后向用户发送邮件
不幸的是,“after\u create
”在“after\u save
”之前起作用,但我需要:在保存过程发生后发送注册电子邮件
。我正在考虑在“之后创建”
”中运行:将\u字段\u处理到另一个\u表中,但它会连续运行两次,这没有多大意义
在本例中,我如何指示“在保存后””在“在创建后””之前运行?还有更好的建议吗?我在保存之前尝试了“”,在创建之前尝试了“”,但似乎处理不正确
有什么建议吗 您可以通过组合使用创建后和更新后回调来分离调用
after_create :process_field_to_another_table, :send_registration_email
after_update :process_field_to_another_table
这样,在发送注册\u电子邮件之前调用另一个\u表的处理\u字段
,您可以在创建后使用和更新后使用回调组合来分离调用
after_create :process_field_to_another_table, :send_registration_email
after_update :process_field_to_another_table
这样,process\u field\u to\u另一个\u表
在send\u registration\u email
之前被调用,您可以将两个钩子放在一个钩子中
after_save :foo
def foo
process_field_to_another_table
send_registration_email if id_changed? # id will change only for new record.
end
你可以把两个钩子合在一起
after_save :foo
def foo
process_field_to_another_table
send_registration_email if id_changed? # id will change only for new record.
end
id\u changed?
是rails中的方法还是自定义方法?我想{field\u name}\u changed?
在保存之前适用于。记录保存后将丢失更改历史记录。您检查过了吗?请参见:您可以在保存之前编辑的答案,但在创建记录之前,您不能拥有id
。所以你不能这样做。id\u changed?
是rails中的方法还是自定义方法?我猜{field\u name}\u changed?
在保存之前适用于。记录保存后将丢失更改历史记录。您检查过了吗?请参见:您可以在保存之前编辑的答案,但在创建记录之前,您不能拥有id
。所以您不能这样做。此解决方案将导致进程\u字段\u到另一个\u表运行两次,但谢谢您,我更改了id\u?不会的。after_update仅在对象更新且未创建时运行。此解决方案将导致进程_字段_到另一个_表运行两次,但谢谢,我更改了id_?不,不会。after_update仅在对象已更新且未创建时运行。