katotatsu1213のブログ

プログラミング学習の過程を記録しようと思います

写真投稿アプリの作成過程(続き)

お疲れ様です!

今日は機能のアプリ作成の後半の話を載せようと思います!

 

昨日は知識として学んだバリデーションを使って保存するデータに制約を設けました。

また、今回はアクションが増えるということでまずdestroyアクションをルーティングとコントローラー内に記述しました。

ビューにも削除用のボタンを設けたのでlink toにrails routesで確認したパスを記載します。

次に編集です。

editで編集してupdateで更新します。流れはnewアクションとcreateアクションに似ていますが、異なる点は編集から更新の場合はすでに存在しているレコードを洗濯して中身を置き換える点です。なのでeditアクションでは編集したいレコードをインスタンス変数に代入してビューに受け渡すことで編集画面が利用できるようになります。

 

7つのアクションでは最後になりましたがshowアクションである詳細ページ表示機能を実装します。

流れは今までと同じでルーティング、コントローラー、モデル、ビューの作成をします。

ここでコントローラーを確認すると違うアクションでも中身の記述が同じものがいくつかありました。

これは、複数人で作業する際など可読性にかけてしまうので今回はbefore_actionを使って特定のアクションにのみ実行される前に共通の処理を行えるようにしました。

 

これで投稿機能に関する部分が完了しました。

次は、ユーザー管理機能の実装をします。

ここで初めてユーザー機能について触れました。ユーザー管理機能と聞くとかなり難しいイメージはありましたが今回というか現在もdeviseというgemを使って実装しています。deviseはユーザー管理機能を簡単に実装できるgemのことです。

gemfileにgem 'devise'と記述後にターミナルでbundle installと記述しインストールしてから使用します。また、rails g devise:installと打つと設定用のファイルも作成してくれるというめちゃくちゃ便利笑

モデル作成も専用のコマンドがあってモデルやマイグレーションファイル、ルーティングの記述まで自動で行ってくれます。

マイグレーションファイルには自動でemailとpasswordが記述されるので他に追加したいカラムがあれば記述してマイグレートすれば完了です。

 

また、deviseに関してですがdeviseの処理を行うコントローラーはgem内に記述されているため、編集することができません。

なのでストロングパラメーターを記述する際は全てのコントローラーが継承しているappliction_controller.rbに処理を記述することで全てのコントローラーで共通となる処理を可能にできます。

 

また、ユーザーのログイン状況によってボタンの表示が変わるように実装しました。

user_signed_in?メソッドです。deviseが導入されている時に使用できます。

ユーザーがログインしていればTrueを、していなければFalseを返します。

if文で条件式として記述し実装しました。

それとログインしていない状態ではログインもしくは新規登録ページにリダイレクトされるようにredirect_toメソッドを使用して実装しました。

 

今回も少し長くなってしまったので次回に続きを記載していきたいと思います。

今日はオリジナルアプリをデプロイしたら急に地図が表示できなくなってしまったのでそちらの解決を行いたいのと要件定義(README.md)の編集を今日中に終わらせたいなと思っています!

 

ではまた!