TodoList: Todo の公開2006年12月18日 11時59分20秒

作成者が欲しいと思った。それだけでなく、現在の担当者も欲しい。そうなると users テーブルと、todos テーブルに二つの一対多の関連を作る必要がある。そうなると、Rails で出来ない事は無いが、少し手間が掛かるようになるので後回しにする。

いくつかの所属団体 (Organization) が作れる。登録されている団体 (Organization) が増えてくると、全ての TodoList を全員に公開されているのは芳しくないことがある。所属先でのみ、共有したくなることもある。

どんな方法がいいのだろうか。

[Rails] Associations を参考にすすめる。各任意の Todo 項目は複数の所属 (Organization) に割り当てられる様にしたい。そうなると、多対多の関係になる。そのような関係に has_and_belongs_to_many がある。略して habtm らしい。[Rails] habtm と has_many :through (ActiveRecord) によると、habtm ではなく has_many を相互に使って実装することも出来る。後々に、この対応に対して追加情報を加える可能性が高いので、has_many :thruogh を使い実装を試みる。

設計としては、Todo を簡単に他の所属 (Organization) に公開できるようにしたい。具体的に言うと、todo/show のページにアクセスしたときに、

  1. 全ての団体名 (Organization) が表示されて、
  2. それぞれの状態が表示されるようにしたい。そして、
  3. 一度公開された Todo も後で取り消せるようにもしたい。
  4. 新しい団体名 (Organization) が追加された場合でも不具合が無いようにする必要もある。

todo_organizatoin_permissions とでも名付けようか。このテーブルにて以下の作業が必要になる。

  1. 公開されたのを示すために、todo_id と organization_id を関連付けた項目を作成する。
  2. 他に published フィールドを作り、非公開にされた場合にはそれが分かるようにする。
  3. 関連の見つからない団体には非公開。

まずは、todo の show ページを改造しなくては。

前回次回