📑

Redmineのバージョンのソート順

2023/03/07に公開

Redmine 5.0の場合は次の通り。

  • 期日が早いものが先。もし期日が空であれば後
  • 期日が同じであれば名称で並べ替え。名称が同じであれば versions テーブルの主キーである id で並べ替え

チケット一覧で対象バージョン順にソートしたときに意図通りの順序にならない場合は期日がどのように設定されているか確認する。

app/models/version.rb:

  # Versions are sorted by effective_date and name
  # Those with no effective_date are at the end, sorted by name
  def <=>(version)
    if self.effective_date
      if version.effective_date
        if self.effective_date == version.effective_date
          name == version.name ? id <=> version.id : name <=> version.name
        else
          self.effective_date <=> version.effective_date
        end
      else
        -1
      end
    else
      if version.effective_date
        1
      else
        name == version.name ? id <=> version.id : name <=> version.name
      end
    end
  end

Discussion