ぷろぐらみんぐ学習帳

プログラミング初心者の学習記録です。2020年12月に勉強開始。

「インスタンス変数.カラム名」で目的のカラムのデータを取り出せる理由(Ruby on Rails)

こんばんは。Ruby on Railsの勉強中にわいた疑問です。

DBのカラム名textのデータを表示させるため、モデルに「@tweet = Tweet.find(params[:id])」、ビューファイルで「@tweet.text」の記述しただけで目当てのデータが取り出せたことに対して「え?.textって何?メソッド?カラム名」となったため調べました。

 

いざ調べてみると、やはり同じ疑問を持つ方はいました。

https://qiita.com/yamayu_504/items/ad6ebe21226686391c47

 

こちらも参考になります。

https://qiita.com/Asama334/items/6fb79e4890a5118d8dee

 

一言でいうと「Ruby on Railsではカラムのデータを取り出すための、カラム名と同じ名前のメソッドが自動で作られている」らしい。それがこの場合でいう.text

 

具体的にいうと

① @tweet = Tweet.find(params[:id])に対応する、各カラムのインスタンス変数(例えば@text= textカラムの値 )が自動で生成。

② 「def text   @text   end」というtextメソッドが自動で定義。

③ そのtextメソッドを使って(@tweet.text)、インスタンス変数@tweetからtextカラムのをよびだす。

 

Ruby on Railsで①②が自動に実行されるのは、ActiveRecordの機能(ActiveRecord::Base)のようです。@tweet.textの背景にこんなことが隠れているとは。。。!

 

理解しきれていないと思いますが、今日も勉強になりました🐥🐥🐥