クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Rails】ユーザー登録、ポスト投稿、フォロー機能など(Railsチュートリアル第11〜14章の概要メモ)

Railsチュートリアルの続きです。前回は7〜10章まで進み、データベースのユーザーのモデルを作成を行いました。その後、ついに最終章の14章まで完走しました!ユーザー登録、ポスト投稿、フォローなどの機能を追加して、Sampleアプリケーションが完成しました!それではいきましょう!

【目次】

Ruby/Ruby on Railsを習得するためにやったこと まとめ
qiita.com

第11章 アカウントの有効化

認証メール送信の通知画面

アカウント有効化メール

アカウントリセットメール

  • ユーザー有効化のために有効化トークン(ハッシュ化した文字列)を生成
  • 有効化メールをユーザーに送信(有効化のurlにトークンが入る)
  • プレビューメソッドでメールの内容をブラウザに表示し、確認
  • 送信を実行するとサーバーログにも送信内容が表示される
  • 有効化urlが開かれるとユーザーの有効化が成功したことを画面に表示
  • 本番環境でのメール送信はMailgunというツールを使う(こちらはうまく動かなかった。。)

第12章 パスワードの再設定

パスワードの再設定リンクが追加された画面

パスワードの再設定の確認メールの送信画面

誤ったメールアドレスに送信した場合

確認メース送信成功画面

パスワード再設定の確認メール

パスワード再設定の確認メール(テキストメール)

パスワード再設定画面

パスワード再設定失敗

パスワード再設定成功

  • パスワード再設定のために有効化トークン(ハッシュ化した文字列)を生成
  • 再設定メールをユーザーに送信(再設定のurlにトークンが入る)
  • プレビューメソッドでメールの内容をブラウザに表示し、確認
  • 送信を実行するとサーバーログにも送信内容が表示される
  • 再設定urlが開かれるとユーザーの再設定画面が表示される
  • 再設定を実行すると結果を画面に表示
  • 本番環境でのメール送信はMailgunというツールを使う(うまく動かず…)

ここからRenderのDB(postgreSql)の3ヶ月期間が切れてしまい、DBに接続できない旨のエラーになった。
下記のように新たなDBを作成してダッシュボードで設定しなおしたら再度デプロイできるようになった!

※参考:Renderの3ヶ月無料枠終了後の対応方針を考える #render - Qiita

第13章 ユーザーのマイクロポスト

別ユーザーの投稿一覧画面

フッターにはページングあり

トップ画面で投稿ができる

空欄で投稿実行→投稿失敗

テキスト入力

画像添付(画像以外はグレーアウト、画像サイズはリサイズ設定あり)

投稿済みの画面

削除実行(削除していいかのダイアログが表示される)

削除成功

  • DBにマイクロポスト用のモデルを追加
  • DBのマイクロポストとユーザーを紐づける
  • ユーザー画面ユーザーごとのマイクロポスト一覧画面を追加(ページングも)
  • トップ画面にマイクロポスト投稿フォームとマイクロポスト全体の一覧を追加(ページングも)
  • マイクロポストの削除機能も追加
  • 画像の投稿機能も追加(拡張子識別、画像リサイズも)
  • 画像のアップロード先をAWSのS3に変更(こちらは後回しにした)

第14章 ユーザーをフォローする

トップ画面にフォロー&フォロワー数が表示される(投稿一覧がタイムラインに)

フォロー一覧画面

フォロワー一覧画面

フォローしていないユーザーの画面(フォローボタン)

フォロー中のユーザーの画面(フォロー解除ボタン)

  • DBにフォロー状態のモデルを追加
  • DBのフォロー状態とユーザーを紐づける
  • フォロー数、フォロワー数と各一覧ページのリンクを追加
  • ユーザーページにフォロー&フォロー解除ボタンを追加
  • フォロー一覧画面、フォロワー一覧画面を作成
  • フォロー機能をHotwireに置き換え(SPA機能)
  • フォロー検索機能にSQLのサブセレクト機能で実行(N+1問題の解消)

SPA機能にはAjaxとWebSocketがある - Ajax:ブラウザからのリクエストにサーバがレスポンスを返す - WebSocket:ブラウザとサーバが常時通信し合うことができる

※参考:ノート:AjaxとWebSocket - 滴了庵日録

終わりに:まとめと今後の展望

ようやくRailsチュートリアルを完走できました!下記のようなことを体験できました

  • Rubyのオブジェクト思考
  • RailsによるMVC構成、ルーティング設定
  • ActiveRecordによるDB操作 ※SQLのサブセレクト機能も
  • ERBによるhtml生成 ※EJSと書き方が似ている!
  • BootStrapによるCSS設定 ※Sassによる修正も
  • HotwireによるJS設定 ※TurboでSPA機能も

今回は体験重視でとにかくゴールまで辿り着いたので、今後じっくり理解を深めていこうと思います。


今後やってみたいこと

  • フロントエンドとバックエンドが別れたAPIモード(MVCのV無し)
  • フロントエンドはReact、Nextなどで作る
  • フロントエンドのCSSをTailwindにしてみる
  • ローカル環境をDockerで構築してみる
  • クラウド環境をRenderではなくAWSにデプロイしてみる

※参考:読み物ガイド - 完走者向け次のステップ - Railsチュートリアル

それではまた!


Ruby/Ruby on Railsを習得するためにやったこと まとめ
qiita.com