⭐️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 :new
や redirect_to root_path
など簡潔な記法を使う。
◉form_with
のオプションmodel:
とurl:
について
・基本的にはform_with
のオプションではmodel:
を使用する
・下記のような場合に限り、url:オプションを使います。
⚪︎モデルとフォームが紐づかない場合(例: ログインフォーム: user_sessions)
⚪︎createやupdateを行うコントローラがモデルと単純に紐づかない場合
(例: model: @user
と設定したが、members_controller
に処理が遷移して欲しい場合)
✅総括
課題4に4日程時間がかかってしまったので、課題4で学んだ知識を次の課題5から生かしていきたい!
ルーティングやpathについて深く学べたので、もっと理解を深くしていきたい!🔥💪