リモートワークを便利にするWebアプリRee④~チーム機能の作成~

このアプリではチームごとにプロジェクト管理するために、チーム機能を追加します。

前回までにユーザーの作成、サインインまでできたので、そのユーザーをチームごとにまとめられる機能です。

DB

まずはdb/teams.schemaを作成。

また、チームとユーザーは、いわゆる多対多の関係なので、中間テーブルを作ります。

db/team_members.schemaを追加

適用するコードを打っておきます

モデル

team.rbとuser.rbにそれぞれteam_memberを介して、連携する記述を追加します。team.rbの方はこんな感じです。

team_memberには以下のように仲介する書き方を

コントローラー

チームはユーザーが属するチームを一覧する機能、チーム作成・更新機能、削除機能をつけます。

基本的にはユーザーと同じ感じでdefでindexやcreateを作って、その中でそれぞれを定義しました。

json

Railsでjsonを吐き出す時、jbuilderやgrapeがよく使われると思いますが、そのgemの使い方を覚えるのに時間がかかりそうで今回は使わずRailsに任せることにしました。

が、そのままだとjsonで全ての情報を吐き出してしまうので、指定したものだけ吐き出すように独自でjson化しています。

まずはteam.rbに以下を追加。これでto_jsonを使えるようになります。

あとは、これをコントローラーで使うだけ。例えばこんな感じです。

作成・更新・削除など一連の機能を実装して、他にもいろいろ勉強になりました。