⭐️sorceryを使用して、ユーザー機能を作成しようの確認ポイント

・ルーティングで
resources :リソース名, only:[アクション名]
必要なアクションを指定する事が出来る。

・モデルのValidationで設定した項目について、同じ制約をデータベースに対しても設定するのがセキュリティ上望ましい。

例) uniqueness: trueを付与したカラムは、データベース側にunique_indexの制約をつけていること
※ migrationファイルでadd_index :users, :email, unique: trueを設定する必要がある。

・データベース側に制約をつけていないと、SQLを実行したり、直接データを操作するとモデルで禁止した不整合なデータができる恐れがあります。
不整合なデータはアプリの不具合やエラーの原因となりかねないので、アプリケーションからモデルを経由してデータを作成する場合だけでなく、データベースを直接操作することも考慮して両方に制約を付けるようにする。

form_withはデフォルトではajax通信になってしまうため、
local: trueを指定する。

application.html.erbにログイン前後でヘッダーを分ける記載を書ける。
例)

<% if logged_in? %>
  <%= render 'shared/header' %>
<% else %>
  <%= render 'shared/before_login_header' %>
<% end %>

・Controllerや Viewでのリンク先URLの指定時には render :newredirect_to root_path など簡潔な記法を使う。

form_withのオプションmodel:url:について

・基本的にはform_withのオプションではmodel:を使用する
・下記のような場合に限り、url:オプションを使います。

⚪︎モデルとフォームが紐づかない場合(例: ログインフォーム: user_sessions) ⚪︎createやupdateを行うコントローラがモデルと単純に紐づかない場合
(例: model: @userと設定したが、members_controllerに処理が遷移して欲しい場合)

✅総括 課題4に4日程時間がかかってしまったので、課題4で学んだ知識を次の課題5から生かしていきたい!
ルーティングやpathについて深く学べたので、もっと理解を深くしていきたい!🔥💪