我在Rails文档中找不到真正的东西,但似乎'mattr_accessor'是普通Ruby 类中'attr_accessor'(getter&setter)的模块推论。
例如。在课堂上
class User
attr_accessor :name
def set_fullname
@name = "#{self.first_name} #{self.last_name}"
end
end
例如。在一个模块中
module Authentication
mattr_accessor :current_user
def login
@current_user = session[:user_id] || nil
end
end
此辅助方法由ActiveSupport提供。
mattr_accessor
了类实例变量(@variable
s)的缩写,但是源代码似乎表明它们实际上是在设置/读取类变量。您能解释一下这种区别吗?