ActiveSupport :: Относится к запущенному методу до / после инициализации - PullRequest
0 голосов
/ 20 февраля 2019

Поддерживает ли ActiveSupport::Concern способ запуска метода до или после создания объекта.

, например, для достижения чего-то вроде

Module Benchmarker

  extend ActiveSupport::Concern

  before_initialize
    @constructed_at = DateTime.now
  end

end

(Примечание: не нужно этого для ActiveRecord илиActiveController. Просто универсальный класс Ruby в проекте Rails.)

1 Ответ

0 голосов
/ 20 февраля 2019

ПРИМЕЧАНИЕ. Это будет работать для моделей или только тех классов, которые наследуются от ActiveRecord.

Rails не поддерживает обратный вызов before_initialize.Вместо этого вы можете использовать обратный вызов after_initialize .Тем не менее, когда вы используете его в концерне, вам нужно упомянуть его в блоке included do..end.Например, следующий код должен работать для вашего варианта использования:

Module Benchmarker
  extend ActiveSupport::Concern

  included do
    after_initialize do |subject|
      p "I'm in after_initialize"
    end
  end
end

Вы можете обратиться к этому ответу для получения дополнительной информации о том, как работает ловушка included.

...