gpt4 book ai didi

ruby-on-rails - 如何在插件 init.rb 中正确实例化模型?

转载 作者:行者123 更新时间:2023-12-04 16:07:40 25 4
gpt4 key购买 nike

如何正确初始化需要实例化插件本身定义的模型(读取数据库记录)的 Redmine 插件?

比如我有一个插件my_redmine_plugin带有型号MyPluginModel .在插件初始化时,我想

  • 阅读MyPluginModel的记录来自数据库
  • 使用记录
  • 运行一些初始化代码

    给定以下代码:
    require 'redmine'

    Redmine::Plugin.register :my_redmine_plugin do
    name 'My Redmine Plugin'

    # ...
    end

    Rails.configuration.to_prepare do
    m = MyPluginModel.find(1)
    run_some_init_code(m)
    end

    看起来像 to_prepare在迁移之前运行:
    $ bundle exec rake redmine:plugins:migrate NAME=my_redmine_plugin

    `table_structure': Could not find table 'mypluginmodel' (ActiveRecord::StatementInvalid)
    ...

    当我注释掉 to_prepare在迁移过程中阻塞,一切正常。有什么方法可以检测迁移过程吗?

    最佳答案

    尝试使用 after_initialize而不是 to_prepare .这不是 Redmine 问题——Rails 初始化过程有不同的钩子(Hook),它们在启动期间的不同时间运行。见 the API docs了解更多信息。

    更新:考虑一下,这可能仍然对迁移没有帮助 - 您可以从钩子(Hook)中的错误中解救出来。

    关于ruby-on-rails - 如何在插件 init.rb 中正确实例化模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34634993/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com