Ответ 1
Все описано здесь: http://apidock.com/rails/Class/class_attribute
Если вы нажмете "Показать источник", вы увидите, что для установки значения по умолчанию нет доступных параметров. Вы делаете это правильно.
Каков правильный способ инициализации class_attribute
в Rails?
Я использую это:
class Foo < ActiveRecord::Base
class_attribute :foobar
self.foobar = []
# ...
end
Кажется, что все работает нормально, но, похоже, выглядит немного не-Railsy для меня.
Все описано здесь: http://apidock.com/rails/Class/class_attribute
Если вы нажмете "Показать источник", вы увидите, что для установки значения по умолчанию нет доступных параметров. Вы делаете это правильно.
То, что вы сделали, работает хорошо (если вы не наследуете).
Если вы наследуете этот класс, вы можете использовать метод inherited
, чтобы избежать "утечки".
def self.inherited(sub_class)
self.foobar = self.foobar.clone
# or `self.foobar = []`
end
A default
в ветке управления Rails, проверьте: https://github.com/rails/rails/pull/29270. С помощью этого изменения вы можете:
class Foo < ActiveRecord::Base
class_attribute :foobar, default: []
end