http://gist.github.com/172341(stackoverflow打破了格式化)
在以下情况中,由Human创建的方法名称不适用于Boy。我的理解是否正确attr_accessor方法不是 可用于子类。我需要使用超类来访问attr_accessor添加的方法。
答案 0 :(得分:1)
您正在寻找的是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'
答案 1 :(得分:1)
人类和男孩是两个不同的对象。两个对象永远不能共享一个实例变量。他们都有方法,但该方法将访问对象的相应ivar。
答案 2 :(得分:0)
Rails class_attribute
方法会更好。