4

かなりの数のカスタム フィールドに依存する redmine 用のプラグインを作成したいので、カスタム フィールドを自動的に作成したいと考えています。理想的にはプラグインコード内、またはそうでない場合はプラグインをインストールするときに実行できるスクリプトによって-これを設定するときにWebインターフェイスを介して10以上のフィールドを作成する必要はありません。特に1つがリストの場合かなりの数の値があります。

これを行う標準的な方法があるかどうか、誰か教えてもらえますか?

また、既存のインストールからカスタム フィールドをエクスポートする良い方法はありますか?

4

3 に答える 3

3

移行スクリプトを使用する必要があります。スクリプトを入れて、そこ#{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
于 2011-10-03T13:52:20.960 に答える
1

Andriy 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 からその存在を確認した後、「テキスト」タイプのカスタム フィールド「A New Custom Field」が作成/削除されます。

于 2015-01-06T17:25:14.560 に答える
0

カスタムフィールドは基本的にほとんどリソースとして実装されます(ただし、custom_fieldsのリソースルートはありません)。CustomField.create/newを使用してプラグインに必要なフィールドを作成できないようにする必要がある理由がわかりません。同様に、find()を使用して、既存のすべてのカスタムフィールドを取得できるはずです。しかし、私はこれまでこれを行ったことがなく、これが標準的な方法であるかどうかはわかりません。しかし、手に負えないのですが、この方法でそれを行うことに何の問題もありません。

于 2010-03-18T17:59:45.893 に答える