от
У меня есть родительский класс, и некоторые дочерние классы
class Base
end
class ChildNameAge < Base
  ATTRIBUTES = [:name, :age]
  attr_accessor *ATTRIBUTES
end
class ChildHeightWidth < Base
  ATTRIBUTES = [:height, :width]
  attr_accessor *ATTRIBUTES
end
Как я могу переместить этот attr_accessor в родительский класс, но все еще использовать константу
ATTRIBUTES
из дочерних классов, поэтому мне не пришлось бы повторять это
attr_accessor *ATTRIBUTES
для каждого дочернего класса.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Ваш вопрос в корне ошибочный. Вы инвертируете цикл зависимости наследования на основе классов. Родители не могут ничего знать о своих детях по определению наследования на основе классов. Перемещение
attr_accessor
в
Base
(parent) класс будет означать, что он будет иметь доступ только к значениям, определенным сам по себе, а не к его дочерним элементам!     
0 голосов
от
Вы определите ATTRIBUTES в Base как хэш, связывающий имя класса с атрибутами и будете использовать унаследованный метод для Class.
class Base
  ATTRIBUTES = {
    "ChildNameAge" =
...