如何正确初始化需要实例化插件本身定义的模型(读取数据库记录)的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
块时,一切正常。有没有办法检测迁移过程?
答案 0 :(得分:0)
尝试使用after_initialize
代替to_prepare
。这不是Redmine问题--Rails初始化过程有不同的钩子,它们在启动期间的不同时间运行。有关详细信息,请参阅the API docs。
更新:考虑到这一点,这可能对迁移没有帮助 - 您可以从钩子中解除该错误。