はじめに
ハッシュから値を取得する方法について、曖昧に覚えていた部分があったので整理のためまとめます。
間違った解釈をしていたらご指摘ください。
ハッシュの取り出し方
例えば以下のようなハッシュが存在するとする
user = {name: タロウ, age: 15, height}
userというハッシュ名から任意のキーのバリュー(値)を取り出すためには、
puts user[:name]
⇨"タロウ"
ここで少し落とし穴がある。
railsで開発を続けていると、ついついテーブルの値を取得する延長線上で
puts user.name
で値を取り出したくなるが、これでは「nameの変数が未定義ですよ」とエラーが出ます。
これはなぜ起きるのか・・・
ズバリ原因は、ゲッターセッターが定義できているかと、ActiveRecord::Baseの存在のせいです。
ゲッター、セッターとは
以下の記事を参考にしました。
ActiveRecord::Baseとは
ゲッターとセッターを理解したら、次はActiveRecord::Baseの理解も必要です。
下記に自分が理解できた記事を記載しております。
簡単に説明すると、Railsでは、rails g model モデル名で作成したモデルは、テーブルとやりとりをしやすくするために、ActiveRecordという機能を使えるように設定されています。
実際は、ActiveRecord::Baseをモデルクラスに継承することでそのモデルは、ActiveRecordを使用できます。
ActiveRecordが継承されると、そのモデルはfindやsaveメソッドが使用できるようになるのですが、他にもモデルクラスが紐づくテーブルのカラムがプロパティ値となり、明示的にgetter や setter を定義しなくても自動的に作成してくれるという役割も担います。
(ゲッターやセッターを自動生成してくれる役割をついつい忘れがちになるので注意が必要)