代码之家  ›  专栏  ›  技术社区  ›  Anna B

提交后的Rails?

  •  7
  • Anna B  · 技术社区  · 14 年前

    是否有人实施了 after_commit

    def remove_file
      current_transaction.after_commit do
        FileUtils.rm(file_path)
      end
    end
    

    你知道这是否已经实现了,是否会在Rails3.0中实现吗?

    5 回复  |  直到 14 年前
        2
  •  3
  •   Nick Ragaz    14 年前
        3
  •  2
  •   Josh Delsman    14 年前

    你不会看到的 after_commit 在Rails3.0中,至少还没有。你可以申请一个补丁,看看它是否得到了核心团队的批准,但我怀疑它会。这个功能在Rails核心之外的插件中仍然更具功能性。

    您可以尝试此插件:

    http://github.com/GUI/after_commit

        4
  •  1
  •   Anna B    14 年前

    after_commit plugin 启用以下语法:

    def some_callback
      after_commit do
        # save file, expire cache, etc
      end
    end
    

        5
  •  1
  •   Michał Kwiatkowski    11 年前

    由于OP询问如何在提交事务后动态设置要执行的代码,所以提交后并不能解决他的问题。幸运的是有 after_commit_queue 宝石正好解决了这个问题。

    include AfterCommitQueue
    
    def remove_file
      run_after_commit do
        FileUtils.rm(file_path)
      end
    end