コロナで無職になった私がエンジニアになるまで

コロナの影響で前職をクビになってから、エンジニアを目指してます。

オリジナルアプリ作成記 ~トップページ、Userの管理機能、記事投稿機能の準備~

今日からこれまでスクールで学んだことを生かしてオリジナルアプリを作成していく。
目標は1ヶ月で仕上げること!
年末年始の忙しい時期にしてはハードルの高い目標だなと思う。

まずは、レイアウト的な物を作ることにした。
データ設計とかは大雑把だけどもメモ帳にまとめて、とりあえず作ってみることに。

f:id:Kosei_Program:20201219183453p:plain


だ、ダセェ…笑

我ながらセンスのないレイアウト、色使い…。
ある意味感動する。絵心はないのは昔からだけども、こういうところにも出るんだなぁ

しかし問題ない。重要なのは機能の面。
今のところ予定では、ContentA(赤)、ContentB(青)、ContentC(黄)の三つがこのアプリのメインの機能になる。
名前は今のところ適当。
それぞれに

「全ユーザーが投稿した依頼のまとめ(記事一覧)」

「依頼投稿機能(新規記事投稿)」

「フォロー、フォロワー間のチャット機能(これは実現できたらいいな程度に)」

html、CSSは見れればいいや程度に適当に編集。
もちろんデザインがしっかりしていればユーザーも使いやすいだろうけど、
とりあえずは機能をしっかり作っていきたい。
余裕があればデザインにも力を入れる。多分ないけど。


次に取り組んだのは、User管理機能。いわゆるログイン、ログアウト、新規作成。
deviseをインストールして、ちょちょいとやるだけの簡単なお仕事。
これはもはやどのアプリを作成する上でも避けられない作業だし、
やることは全部一緒なので、テンプレート的に暗記すればいいかなと思った。
そこまで内容も難しくないしね。

f:id:Kosei_Program:20201219184346p:plain

やっぱりダセェ!!
なんか必要最低限の機能を持った物を作ると入ったもののダサすぎる。
でも中央揃えとか頑張ったんや。ちょっとでも見栄えを良くしようと思って。
色って大事だなぁ。

新規登録、ログインして、テーブルに情報が登録されてログアウトできて〜までは
deviseで一通り実装できる。
問題は、ログアウトする際にmethod: :deleteを記述することを忘れずに。

ストロングパラメータに関しても注意が必要。
application_controllerにdeviseに関してのストロングパラメータを書く必要がある。

deviseの処理を行うコントローラーはGemに書かれているためである。
Gemは直接編集することはできないためapplication_controllerに書くという流れ。

deviseを使用して実装を行った場合は、paramsの他に、paramsとは異なった形のパラメーターも受け取っている…らしい。
=> deviseコントローラーにストロングパラメーターを設定する必要がある。
   paramsとは異なった形のパラメーターを受け取るように設定する必要がある。

異なった形のパラメーターはdevise_parameter_sanitizerというメソッドを使用する。

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
  end
end

こんな感じ。
ログイン、新規登録をする時などのリクエストからパラメーターを取得することができる。
第一引数に機能、次に許可するカラムを記述する。
今回はnicknameというカラムを後から追加したので、それを新規登録する際に許可するようにしておく。

if: :devise_controller?でdeviseに関する処理のみこれらのメソッドが使用されるようにする。
application_controllerで全体に影響するけど、deviseのみに使用したいのでこのように記述する。


あとは、application.html.erbのヘッダー部分にログインしている時、ログアウトしている時の状態で表示を分ける。


とりあえずユーザー管理機能は実装できたので、次に記事投稿機能の準備だけしておこうと思って取り組み始めた。
とは言っても、モデルを作って、ルーティング設定、コントローラー作成、ビューファイルの作成まで。
コンソールを使って、データを登録して、ビューファイルに表示させるところまでやって…。

今日はここまで!
ボチボチやっていきましょう。