Redmine Checklists pluginで未チェックの検証を雑に行う

  • 10
    Like
  • 1
    Comment
More than 1 year has passed since last update.

Redmine Checklists pluginという、チケットにチェックリストを付与できる大変便利なRedmineのプラグインがあるのですが、チェックに強制力を持たせられないのが困りものです。
(タスクが残ってるのにレビュー依頼とか出されても困る...)

とりあえず上記を解決するにはlib/redmine_checklists/patches/issues_patch.rbをいじればよいです。
※Railsのルートから見ると、plugins/redmine_checklists/lib/redmine_checklists/patches/issues_patch.rb

issue_patch.rb
require_dependency 'issue'

module RedmineChecklists
  module Patches

    module IssuePatch
      def self.included(base) # :nodoc:
          # ~~~ 省略 ~~~

          # ここから
          validate :complete_tasks

          def complete_tasks
            # 未チェックの項目が一つでもあると設定できないようにしたいステータスのIDを指定
            # この例だと、全部チェックしないとステータスを"解決"(status_id:3)に更新できないようにしている
            return unless status_id == 3
            return if checklists.all? {|checklist| checklist.is_done}
            errors.add(:base, 'チェックリストに未チェックの項目が存在します。タスクを全て完了させてください。')
          end
          # ここまでを追加

        end
      end

    end

  end
end

こうしておくと、タスクを完了させないと怒られるようになります。

プラグインの設定画面でステータスを設定できるようにして、さらにプルリクも送ったらカッコイイと思うんだけど、そんな気力はなかった。