【Rails】SymbolとStringの違いとenumについて
シンボルと文字列
・シンボル
オブジェクトidが一意に振られる。一つのシンボルは常に同一のオブジェクト。なのでメモリの節約になる。
変更が加えられない(イミュータブル)
class Symbol (Ruby 3.0.0 リファレンスマニュアル)
・文字列
オブジェクトidが毎回変わる。別のオブジェクト。
変更される(ミュータブル)
enum
数値型のカラムを、文字列やシンボルで参照出来る。
enum型のカラムに、無効な値を入れるとArgumentErrorを返す
=
やmergeなどで、enumで定義されていない値を入れようとすると、以下のようにArgumentErrorを返します。
ArgumentError: 'hoge' is not a valid status
参考
https://tech.misoca.jp/entry/2015/08/10/132419
enum型のカラムに値を設定する
シンボル 文字列 数値
どれでも設定可能です。
が、個人的には - 変更が加えられない(イミュータブル) - オブジェクトidが一意のため、メモリを節約出来る
という理由から、シンボルを使うことが多いです。
RailsやRubyを学びたい人へ
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。
【公式】RailsHack(レイルズハック)
【公式】Udemyで学んでみる