2010-03-18 53 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。

相關問題