1

好的,这有点不寻常,但我有一系列数据收集表格,可以将数据保存到各自的模型中。我想要做的是自动插入一个共同的父(活动/事件日志 - 单独的模型)记录,该记录对于每个表单都是通用的。(在保存子记录之前,所有表单都会在此模型中保存一个隐式记录)。所以保存顺序需要如下:

1) 在每个详细表单上捕获用户输入 2) 创建一个包含摘要信息(用户 ID、记录类型、时间戳)的新父记录 3) 捕获新的父 PK 值以插入(作为外键)到详细记录 4)使用用户输入数据和 FK 数据填充详细记录,然后保存 5) 提交(或回滚)

我该怎么做 - 像这样的东西的钩子在哪里?显然,我需要覆盖 Rails 中的一些默认行为来执行此操作 - 有没有人看到他们可以分享的任何示例?

TIA,布伦丹

PS 在您认为这是一种低音确认方法之前,我需要处理发生活动/重要事件但底层详细信息不可用的用例。
(当只创建父级时,这可能会出现在外部导入的数据中)。现在我主要对探索 Rails 解决方案感兴趣。

4

1 回答 1

4

有几种方法可以实现这一点,具体取决于您想要的方式。

  • before_save 过滤器在您的子记录模型中,

    类 YourModel < ActiveRecord::Base
      before_save :create_parent
    
      def create_parent
        #在这里做点什么
    
      结尾
    
    结尾
    

  • Active Record 观察者(遵循观察者模式)

    这在你的 environment.rb 文件中

      config.active_record.observers = :yourmodel_observer
    
    

    创建一个 yourmodel_observer.rb 文件

    和代码

      类 YourModelObserver < ActiveRecord::Observer
    
        def after_save(对象)
    
        结尾
    
        def after_update(对象)
    
        结尾
      结尾
    
    

  • 于 2009-08-05T06:26:30.120 回答