好的,这有点不寻常,但我有一系列数据收集表单,可以将数据保存到各自的模型中。我想要做的是自动插入每个表单通用的公共父(活动/事件日志 - 单独模型)记录。 (在保存子记录之前,所有表单都将在此模型中保存隐式记录)。因此保存顺序必须如下:
1)在每个细节表单上捕获用户输入 2)创建包含摘要信息的新父记录(用户ID,记录类型,时间戳) 3)捕获新的父PK值以便插入(作为外键)到详细记录中 4)用用户输入数据和FK数据填充详细记录,然后保存 5)提交(或回滚)
我怎么能这样做 - 这样的钩子在哪里?显然我需要在Rails中覆盖一些默认的bahaviour才能做到这一点 - 有没有人见过他们可以分享的任何例子?
TIA, 布伦丹
P.S。在您认为这是一种低音方法之前,我需要处理发生活动/重要事件的用例,但基础详细信息不可用。
(当只创建父项时,可能会出现外部导入数据)。现在我主要对探索Rails解决方案感兴趣。
答案 0 :(得分:4)
有几种方法可以实现这一目标,具体取决于您的需求。
class YourModel < ActiveRecord::Base before_save :create_parent def create_parent #do something here end end
这可以在您的environment.rb文件
中找到config.active_record.observers = :yourmodel_observer
创建yourmodel_observer.rb文件
和代码
class YourModelObserver < ActiveRecord::Observer def after_save(object) end def after_update(object) end end