【Ruby on Rails】attr_accessorについて

Ruby on Rails

attr_accessorとは

attr_accessorとは簡単に説明するとクラスメソッドを良きように受けてくれる受け皿みたいなものです。

attr_accessorを使わないとこうなる

下記のようにクラスで定義していない関数を呼び出すとエラーがでます。

なので関数を定義してあげる。しかしまた問題が。。。

今度は引数を受けるメソッドがないためメソッドエラーになります。
そこでさらに改良を重ねて引数をつけた関数を用意します。

はい!これでエラーがなくなりました!!でもこれ毎回書くの面倒ですよね。。そこでattr_accessorを使います。
上記コードをattr_accessorで書くと、、

めっちゃすっきりしますね!!

attr_accessorをreadとwriteにわける

attr_accessorをreader(読み取り)とwriter(書き込み)でわけることができます。
attr_accessorを使えば済む話なので滅多につかうことはないと思いますがご紹介します。

は同じ意味です。

は同じ意味です。

は同じ意味です。

attr_readerが引数ありで読み取り専用のメソッド定義
attr_writerが引数ありで書き込む専用のメソッド定義
です。

要するに「attr_accessor」の中でattr_readerattr_writerが処理されています。
attr_accessorという便利なものがあるので分ける必要性はないので雑学程度に覚えておきましょう。