2010-03-18 51 views
3

我想写一个redmine的插件,它取决于很多custom fields,所以我想自动创建自定义字段。理想情况下,在插件代码中,或者如果不是通过脚本,我可以在安装插件时运行 - 我真的不想通过Web界面创建10个以上的字段,当我设置它时,特别是当一个列表有很多值。在Redmine中自动创建自定义字段

任何人都可以告诉我,如果有这样做的标准方法?

还有从现有安装中导出自定义字段的好方法吗?

回答

2

您应该使用迁移脚本。将您的脚本放入#{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 
+0

您是否有链接到CustomField.create的API?我需要添加一个自定义字段到我的问题列表,但似乎无法找到任何方式直接做到这一点 –

0

自定义字段基本上作为一个资源实现(但没有custom_fields的资源路由)。我不明白为什么你不能使用CustomField.create/new来创建插件需要的字段。同样,你应该可以使用find()来获取所有现有的自定义字段。 但是,我不得不说,我从来没有这样做过,不知道这是否是标准的方式。但是,无论如何,这样做我看不出有什么不妥。

0

随着舍甫琴科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。

相关问题