LoginSignup
3
3

Ruby シンボルとキーについて

Last updated at Posted at 2024-02-23

Rubyにおけるシンボルとキーについての関係性について

Railsでストロングパラメータの設定を行う際に、シンボルとキーの理解が整理できていないことに気がついたので、こちらでまとめておこうと思います。

 def site_params
    params.require(:site).permit(:name, :subtitle, :description, :favicon, :og_image, main_images: [] )
  end

私が気になった点は、:subtitlemain_images: []の書き方の違い(:の位置)です。

:subtitle
単一のデータを所有するカラムの記載の仕方。

main_images: []
複数のデータを所有するカラムの記載の仕方。
ストロングパラメータに追加する際は、末尾に追加する。
そうでないと、Railsの規約に従っていないらしく、エラーが出る。

今回の話題は、この:subtitlemain_images:の部分について。

キーの種類

:subtitlemain_images:
これらは、キーという。
キーの種類として①文字列と②シンボルがある。

①文字列

文字列をキーとして使用する場合、キーはダブルクォーテーション(")またはシングルクォーテーション(')で囲む。

hash = {"name" => "John Doe", "age" => 30}

特徴

1.文字列はその都度新しいオブジェクトが作成されるため、メモリ使用量が増える。

2.文字列をキーとして使用すると、その文字列の内容が完全に一致する必要がある。

②シンボル

hash = {:name => "John Doe", :age => 30}
hash = {name: "John Doe", age: 30}

特徴

1.シンボルはメモリ内で一意のIDを持つため、同じシンボルを複数回使用しても、メモリ上では一つのオブジェクトを参照することになる。

2.特に大規模なアプリケーションや頻繁にアクセスされるキーに対して、パフォーマンスが向上する。

:の位置の違いについて

:namemain_images:はどちらもシンボルを指しており、記載の仕方に違いがあるが、それぞれがシンボルであることに変わりはない。

key : value

上記のように、valueの記載(今回は[])も必要なときは、main_images:のように、キーの後に:をつける方が可読性の向上面からよく使われる。

まとめ

一般的には、上記の理由からシンボルが使用されることが多い。

※誤りがあれば、教えていただけますと幸いです。🙏

参考記事

3
3
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
3