私が今日知ったプチ衝撃の事実!
Railsのparams
では、Hashの機能が拡張されているためキーの型に関係なく値を取ってくることができる!!
つまり…
h = { :last_name => "山下", "first_name" => "智久" }
#キーに指定した要素の型で値を取ってくることができる
h[:last_name] #=> "山下"
h["first_name"] #=> "智久"
#指定した要素とは違う型で値を取ってくることはできない
h["last_name"] #=> nil
h[:first_name] #=> nil
stringとsymbolが間違っていると取ってくることができない。
#(railsの場合)
#railsで受け取ったparams
params
=> <ActionController::Parameters {"last_name"=>"山下", "first_name"=>"智久"}>
#paramsの見た目はHashだが、ActionController::Parametersのインスタンス
params.class
=> ActionController::Parameters
#キーの型に関係なく値を取ってくることができる!
params["last_name"] #=> "山下"
params["first_name"] #=> "智久"
params[:last_name] #=> "山下"
params[:first_name] #=> "智久"
railsを書いている限りは、コントローラでparamsを受け取って処理をするときなどキーの型を気にしなくてもよしなにやってくれる。怖い…
ちなみに
string => symbolに変換してくれるmethodはto_sym
god = "tomohisa"
p god.to_sym
=> :tomohisa
paramsの中身を眺めていたときに、なんでこれまでsymbolとstringテキトーにやってきたのに値がとれてたんだ?と思って知ったことでした。