Try   HackMD

Redmine座談会

Redmineのユーザーとグループの内部仕様について、
お話をしようと思います。

事の発端

現在のグループ管理は単一階層しかなくユーザーのグループ分けを工夫する必要がある。
入れ子集合モデルを使って、
グループ管理を多次元階層で管理できるようにできないのか?
っていうのが発端でした。

例:

* ○○会社
  * △△支社
    * □□部
      * ☆☆課
        * ◇◇係

背景

現状では用途ごとに何個もグループを作成して、
ユーザーを複数のグループに関連付けていくという運用が発生するし、
グループとユーザーの管理がかなりめんどくさい。

グループを多次元で管理できるようになれば、上記の煩雑さがかなり軽減される。

補足

現状のユーザーを複数のグループに紐付けられる仕様はそのまま残しておきたい。

ユースケースとして、以下のようなグループを設定した場合に、

* ○○会社
  * △△支社
    * システム開発部
* プログラマー
    * Ruby
    * PHP

以下の2つのグループに紐付けたいといったケースにも
対応できるようしておきたい

  • ○○会社 > △△支社 > システム開発部
  • プログラマー > Ruby

Redmineの現状

ユーザーとグループが単一テーブル継承をで1つのテーブルで管理されている。
そのため、上記の対応しようとした場合、
グループを多次元階層に対応させるための入れ子集合モデルへの変更が行いにくい。

※(単一階層しかない)ユーザーを管理している「users」テーブルに、
入れ子集合モデルのカラムが存在しているとかなり微妙な感じになる。
(データベースを直接確認した場合に何これ?ってなる)

参考資料