在自动化管理平台的自定义字段创建
-
20-09-2019 - |
题
我想写管理平台的一个插件,这将依赖于相当多的自定义字段一>,所以我想自动创建自定义字段。理想情况下,插件代码中,如果没有一个脚本,当我安装插件,我可以运行 - 我真的不希望有,当我设置此创建通过Web界面10+领域,尤其是当一个人名单与不少值。
谁能告诉我,如果有这样的标准的方法?
也就是存在于从现有安装导出自定义字段的好方法?
解决方案
您应该使用迁移脚本。把你的脚本到#{PLUGIN_ROOT}/db/migrate
并调用.create
那里。 Redmine的来源包含许多类似的脚本。
例如,脚本可以有一个名称:001_populate_custom_fields.rb
内容:
class PopulateCustomFields < ActiveRecord::Migration
def self.up
CustomField.create ...
end
def self.down
end
end
其他提示
自定义字段基本上是几乎作为一个资源来实现(但是没有用于custom_fields没有资源路由)。我不明白了一个道理,为什么你不应该能够只使用CustomField.create /新创建的插件需要的字段。同样,你应该能够只使用find()方法来获取所有现有的自定义字段。 但是,我不得不说,我从来没有这样做过,不知道这是否是标准的方式。但是,断手,我看不出什么毛病做这种方式。
随着舍甫琴科Lesyuk回答,把你的脚本下#{PLUGIN_ROOT}/db/migrate
并通过使用命令来安装/卸载插件测试。
有关安装插件使用命令:
rake redmine:plugins:migrate
和用于卸载它:
rake redmine:plugins:migrate NAME=<your plugin name> VERSION=0
检查官方文档进一步的细节。
例如,脚本可以001_populate_custom_fields.rb
是这样的:
class PopulateCustomFields < ActiveRecord::Migration
# method called when installing the plugin
def self.up
if CustomField.find_by_name('A New Custom Field').nil?
CustomField.create(name: 'A New Custom Field', field_format: 'text')
end
end
# method called when uninstalling the plugin
def self.down
CustomField.find_by_name('A New Custom Field').delete unless CustomField.find_by_name('A New Custom Field').nil?
end
end
这将创建/删除从redmine的数据库表custom_fields检查它的存在后自定义字段“的新自定义字段”类型的“文本”。
不隶属于 StackOverflow