Автоматизация создания пользовательских полей в Redmine

StackOverflow https://stackoverflow.com/questions/2471238

  •  20-09-2019
  •  | 
  •  

Вопрос

Я хочу написать плагин для redmine, который будет зависеть от многих пользовательские поля, поэтому я хотел бы автоматически создавать пользовательские поля.В идеале в коде плагина или, если не с помощью скрипта, который я могу запустить при установке плагина - я действительно не хочу создавать более 10 полей через веб-интерфейс при настройке этого, особенно когда одно представляет собой список с довольно большим количеством значений.

Кто-нибудь может сказать мне, есть ли стандартные способы сделать это?

Также есть ли хороший способ экспортировать пользовательские поля из существующей установки?

Это было полезно?

Решение

Вам следует использовать сценарии переноса.Поместите свои сценарии в #{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() для получения всех существующих пользовательских полей.Однако я должен сказать, что я никогда не делал этого раньше и не знаю, является ли это стандартным способом.Но, с другой стороны, я не вижу ничего плохого в том, чтобы сделать это таким образом.

Как ответил Андрей Лесюк, разместите свой сценарий под #{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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top