3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのparamsはキーのstringとsymbolの違いを隠蔽してくれる

Posted at

私が今日知ったプチ衝撃の事実!

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テキトーにやってきたのに値がとれてたんだ?と思って知ったことでした。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?