Rubyのattr_accessorについて

こちらの記事を参考にしました!

以下は自分なりにこの記事を咀嚼したものですので、詳しくは元記事をお読みください。

bryankawa.hatenablog.com

 

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"