初めに
疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。
疑問に思った点
コントローラでparamsの記述するときはprivateで定義をして取得している時があります。
private
def xxxxx_params
params.require(:user).permit(:email)
end
なのに
@token = params[:id]
と記述するだけで取得できるコードもあります。違いはなんでしょう。
調べた結果
params[:id]とxxxxx_paramsでの違いはAPIで送られるデータかそうでないかです。
idはAPIリクエストの一部として送信されるので、pramas[:id]で取得できます。
モデルから取得する必要があるデータと、直接送られてくるデータで区別をしています。
修正・追記
privateでparamsを定義しなくてもparamsは使えます。
それでも定義するのはセキュリティの強化、コードの可読性や明示性を高めるためです。
これによって、どのメソッドが外部からアクセスできるかが明確になります。