Frage

Ich möchte ein Plugin für redmine schreiben, die auf ganz wenige benutzerdefinierte Felder abhängen , so würde Ich mag die benutzerdefinierten Felder automatisch erstellen. Im Idealfall innerhalb des Plugin-Code, oder wenn sie nicht von einem Skript kann ich laufen, wenn ich das Plugin installieren - ich mag wirklich nicht 10+ Felder über die Web-Schnittstelle zu schaffen haben, wenn ich diese nach oben gesetzt, vor allem wenn man eine Liste ist mit ganz wenigen Werten.

Kann mir jemand sagen, ob es Standard-Möglichkeiten dies zu tun?

Auch ist es eine gute Möglichkeit, die benutzerdefinierten Felder aus einer vorhandenen Installation zu exportieren?

War es hilfreich?

Lösung

Sie sollten Migrate Skripte verwenden. Legen Sie Ihre Skripte in #{PLUGIN_ROOT}/db/migrate und Call .create dort. Die Redmine Quellen enthalten viele ähnliche Skripte.

Zum Beispiel kann das Skript einen Namen hat. 001_populate_custom_fields.rb

Inhalt:

class PopulateCustomFields < ActiveRecord::Migration
    def self.up
        CustomField.create ...
    end
    def self.down
    end
end

Andere Tipps

Benutzerdefinierte Felder werden im Wesentlichen so ziemlich als Ressource implementiert (jedoch gibt es keine Ressource Weg für custom_fields). Ich sehe keinen Grund, warum sollten Sie nicht in der Lage sein, nur CustomField.create / new Verwenden Sie die Felder Ihr Plugin Bedürfnisse zu erstellen. Ebenso sollten Sie in der Lage sein, nur find () verwenden alle vorhandenen benutzerdefinierten Felder zu erhalten. Allerdings muss ich sagen, dass ich noch nie zuvor getan haben und nicht wissen, ob dies der normale Weg ist. Aber aus der Hand, ich kann nichts falsch sehe damit auf diese Weise zu tun.

Wie Andriy Lesyuk beantwortet, setzen Sie Ihr Skript unter #{PLUGIN_ROOT}/db/migrate und testen Sie es mit dem Befehl für die Installation / Plugin zu deinstallieren.

Für das Plugin verwenden Sie den Befehl zu installieren:

rake redmine:plugins:migrate

und für die Deinstallation es:

rake redmine:plugins:migrate NAME=<your plugin name> VERSION=0

Auf der offiziellen Dokumentation für weitere Details.

Zum Beispiel das Skript 001_populate_custom_fields.rb könnte etwas wie:

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

Dies wird das benutzerdefinierte Feld „Ein neuen benutzerdefiniertes Feld“ vom Typ „Text“ erstellen / löschen, nachdem seine Existenz aus der redmine Datenbanktabelle custom_fields zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top