【问题标题】:Automating custom field creation in Redmine在 Redmine 中自动创建自定义字段
【发布时间】:2010-03-18 15:51:15
【问题描述】:

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

谁能告诉我是否有这样做的标准方法?

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

【问题讨论】:

    标签: ruby-on-rails plugins redmine


    【解决方案1】:

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

    【讨论】:

    • 您有指向 CustomField.create API 的链接吗?我需要在我的问题列表中添加一个自定义字段,但似乎找不到任何方法来直接执行此操作
    • 有谁知道哪里可以找到CustomField.create的API?
    【解决方案2】:

    正如 Andriy 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
    

    这将创建/删除类型为“文本”的自定义字段“新自定义字段”,在从 redmine 数据库表 custom_fields 中检查其存在之后。

    【讨论】:

    • 这应该是公认的答案,而不是实际答案。这个有更多的信息和更完整的方式。
    【解决方案3】:

    自定义字段基本上是作为资源实现的(但是对于 custom_fields 没有资源路由)。我看不出你不能只使用 CustomField.create/new 来创建插件需要的字段的原因。同样,您应该能够只使用 find() 来获取所有现有的自定义字段。 但是,我不得不说我以前从未这样做过,也不知道这是否是标准方式。但是,顺便说一句,我看不出这样做有什么问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      相关资源
      最近更新 更多