Rails имеет расширение класса class_attribute
, которое позволяет наследовать переменные экземпляра класса. Это прекрасно работает с неизменяемыми объектами, например. String
, но не с mutables:Правильный способ использования `class_attribute` с` Hash`
class Base
class_attribute :options
self.options = {}
end
class SubClass < Base
end
Base.options # {}
SubClass.options[:foo] = "bar" # { foo: "bar" }
Base.options # { foo: "bar" }
Вопрос заключается в том, чтобы позволить подклассы иметь свою собственную копию options
без явного его инициализации в своем теле:
class SubClass < Base
self.options = {}
end