Rubyのattr_accessorについて
こちらの記事を参考にしました!
以下は自分なりにこの記事を咀嚼したものですので、詳しくは元記事をお読みください。
Rubyのattr_accessorについてのお勉強
なんとなくModelクラスにいるあいつってぐらいしかきちんと分かっていないので、まとめてみました。
結論からいうと
👇を省略して記述するためのものがattr_accessor
class User def name @name end def name=(str) @name = str end end user = User.new user.name = 'Yusuke' user.name # => "Yusuke"
`User`インスタンスにある`name`は
読み取りと書き込みが必要である。
そのため本来は👆の様に、
読み取りようのnameメソッドと
書き込みようのnameメソッド
が必要だが、それを簡単に記述できるようにしてくれるものがattr_accessorになる。
で、実際に使うとこうなる。
class User attr_accessor :name end user = User.new user.name = "Yusuke" user.name # => "Yusuke"
ちなみにこの2つの実装の中間がこんな感じ
class User attr_reader :name attr_writer :name end
readerをゲッター
writerをセッターと呼ぶ
そして最後に。
attr_accessorで設定したnamはインスタンス変数でUserオブジェクトに設定することが出来る
class User attr_accessor :name def greeting "Hello #{@name}" end end user = User.new user.name = "Yusuke" user.greeting # => "Hello Yusuke"