日常

ケ・セラ・セラ

cattr_accessor, mattr_accessor

また Devise のコードを読んでいたら mattr_reader というのを見つけた。

activesupport の機能で、 reader だけでなく writer, accessor もあり、他にも cattr_accessor があった。

cattr_accessor は attr_accessor のクラス変数版で、

class Foo
  cattr_accessor :name
end

class Foo
  def self.name
    @@name
  end
  def self.name=(name)
    @@name = name
  end
end

mattr_accessor はモジュール版のようだ

module Bar
  mattr_accessor :title
end

module Bar
  def self.title
    @@title
  end
  def self.title=(title)
    @@title = title
  end
end