タスク内容
- 記事作成の API とテストの実装をしよう。
- ダミーの
current_userメソッドを定義する。
- テストにスタブを定義する。
補足
記事の作成はログインしているユーザーだけができる操作です。
ログインユーザーは devise_token_auth gem で current_user という変数に入るようになるので、ダミーとして base_api_controller にこのメソッドを定義して、仮実装として「users テーブルの一番初めのユーザー」を引用するようにしましょう。
それができたら、新規作成する記事の user_id が current_user の id になるような API を実装してください。
最後に request のテストを書いてください。ただし、このテストでは、仮実装である base_api_controller の current_user をテストのときだけ別の値として参照するようにしてあげる必要があります。(これを「スタブ, stub」と呼びます)
具体的にはテストで allow_any_instance_of メソッドを使用して current_user を呼び出せるように実装します。
詳しい内容については以下のリンクを参考にしてみてください!
1. このTaskでやろうとしていること
- 前提条件
- 認証周りの処理は未実装
- その中でもログインした状態で Create / Update / Delete の処理を書けるようにしたい
- 何をやる?
- ダミーの
current_userメソッドを定義する。
- なぜやる?
- 認証周りを未実装でもCreate / Update / Delete の処理を書けるようにしたいから
- チーム開発をする時に、CRUD処理などのデータ操作と認証機能の誰が操作するかを分けて開発できるようになるから
- メリット
- チーム開発をする時に、CRUD処理などのデータ操作と認証機能の誰が操作するかを分けて開発できるようになるから
- CRUD処理のcontroller、認証機能のcontrollerを分けることで、そのcontrollerの責務がわかりやすくなる
- 今回はCRUD処理からcontrollerを記述しているが、逆に認証から書いても良い
2. 処理の流れ
- クライアントから記事作成リクエストが来る(POST /api/v1/articles)
- ルーティングにより Controller の create アクションが呼ばれる
- current_user を取得する(現状は仮実装で User.first を返す)