методы, созданные attr_accessor, недоступны для подклассов - PullRequest
4 голосов
/ 21 августа 2009

http://gist.github.com/172341 (переполнение стека нарушало форматирование)

В следующем случае имя метода, созданное человеком, недоступно для мальчика. Верно ли мое понимание того, что методы attr_accessor не являются доступны для подклассов. Мне нужно использовать суперкласс для доступа к методу, добавленному attr_accessor.

Ответы [ 3 ]

1 голос
/ 22 августа 2009

Человек и Мальчик - два разных объекта. Два объекта никогда не могут совместно использовать одну переменную экземпляра. У них обоих есть метод, но метод получит доступ к соответствующему ивару для объекта.

1 голос
/ 21 августа 2009

То, что вы ищете, это 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'
0 голосов
/ 04 февраля 2017

Rails class_attribute метод будет лучше в этом случае.

Направляющие рельса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...