rails勉強メモ2 -例外処理とstrong parameterの話-

例外処理の話

例外処理は、個別のクラスでハンドリングするのではなく、アプリケーションレベルでハンドリングするのがベター。

今回はrambulanceというgemを使用する
例外が発生するとramburance.rb内に指定したconfig.rescue_responses指定してものにエラーが吸われて対応したviewがレンダリングされる。

これを見る

strong_parameter

idとかcreated_atとかの更新したくないパラメータなどの更新したくないデータが送られてきたときにそれを更新しないようにする。
外部キーとか更新されると非常に困るからね!
以下のような感じで指定します。

mass assignmentのように一気に入れるときはstrong parameterを指定しないと怒られる。

mass assignmentの話

mass assignmentは以下みたいな感じでparametersを全部一気に入れようとするとstrong parameterを使用しないと怒られる

ちなみに個別に入れようとしても全く怒られない。

それはこちらで指定しているので、想定しているレコードの更新だからである。

ここで疑問に思ったのだが、parametersもrailsのログで見ているとhashみたいになっているので、user.update({name: 'fukami', gender: 'male', age: 27})と同じじゃないかということ。
だがしかし、parametersはhashではなく、ActionController::Parametersのインスタンスであるということを知って納得した。

ActionController::Parametersであるかどうかを判断してstrong parameterだということを判断しているということだと思う。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク