我想写一个redmine的插件,它取决于很多custom fields,所以我想自动创建自定义字段。理想情况下,在插件代码中,或者如果不是通过脚本,我可以在安装插件时运行 - 我真的不想通过Web界面创建10个以上的字段,当我设置它时,特别是当一个列表有很多值。在Redmine中自动创建自定义字段
任何人都可以告诉我,如果有这样做的标准方法?
还有从现有安装中导出自定义字段的好方法吗?
我想写一个redmine的插件,它取决于很多custom fields,所以我想自动创建自定义字段。理想情况下,在插件代码中,或者如果不是通过脚本,我可以在安装插件时运行 - 我真的不想通过Web界面创建10个以上的字段,当我设置它时,特别是当一个列表有很多值。在Redmine中自动创建自定义字段
任何人都可以告诉我,如果有这样做的标准方法?
还有从现有安装中导出自定义字段的好方法吗?
您应该使用迁移脚本。将您的脚本放入#{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/new来创建插件需要的字段。同样,你应该可以使用find()来获取所有现有的自定义字段。 但是,我不得不说,我从来没有这样做过,不知道这是否是标准的方式。但是,无论如何,这样做我看不出有什么不妥。
随着舍甫琴科Lesyuk回答,把你的脚本#{PLUGIN_ROOT}/db/migrate
下,通过使用命令来安装/卸载插件测试。
对于安装插件使用命令:
rake redmine:plugins:migrate
和卸载它:
rake redmine:plugins:migrate NAME=<your plugin name> VERSION=0
查看更多详细信息,官方documentation。
例如,脚本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
这将创建/删除自定义字段“新的自定义字段”类型“文本”,之后从管理平台数据库检查它的存在表custom_fields。
您是否有链接到CustomField.create的API?我需要添加一个自定义字段到我的问题列表,但似乎无法找到任何方式直接做到这一点 –