ruby – 由attr_accessor创建的方法不适用于子类

http://gist.github.com/172341(stackoverflow打破了格式化)

在下面的例子中,由Human创建的方法名称不适用于Boy.我的理解是否正确attr_accessor方法不是
可用于子类.我需要使用超类来访问attr_accessor添加的方法.

最佳答案 您正在寻找的是cattr_accessor,它修复了这个特定的问题:

http://apidock.com/rails/Class/cattr_accessor

这是你的例子,修正:

class Human
  def self.age
    @age = 50
  end
  def self.age=(input)
    @age = input
  end

  cattr_accessor :name

  self.name = 'human'
end
class Boy < Human
end

puts Human.age
puts Boy.age
puts Human.name
puts Boy.superclass.name
puts Boy.name # => 'human'
点赞