Подтвердить что ты не робот

Каков правильный способ инициализации class_attribute в Rails?

Каков правильный способ инициализации class_attribute в Rails?

Я использую это:

class Foo < ActiveRecord::Base

  class_attribute :foobar
  self.foobar = []

  # ...

end

Кажется, что все работает нормально, но, похоже, выглядит немного не-Railsy для меня.

4b9b3361

Ответ 1

Все описано здесь: http://apidock.com/rails/Class/class_attribute

Если вы нажмете "Показать источник", вы увидите, что для установки значения по умолчанию нет доступных параметров. Вы делаете это правильно.

Ответ 2

То, что вы сделали, работает хорошо (если вы не наследуете).

Если вы наследуете этот класс, вы можете использовать метод inherited, чтобы избежать "утечки".

def self.inherited(sub_class)
  self.foobar = self.foobar.clone
  # or `self.foobar = []`
end

Ответ 3

В этом году добавлена ​​опция

A default в ветке управления Rails, проверьте: https://github.com/rails/rails/pull/29270. С помощью этого изменения вы можете:

class Foo < ActiveRecord::Base
  class_attribute :foobar, default: []
end