Согласно Mongoid документация для Callbacks , он запускает только обратный вызов действия, которое вы выполняете. Вот почему это не стрельба. Вам нужно будет сделать, как ответил Волди, использовать обратный вызов before_create
.
Однако, если это все, что вы делаете (ваш код не более сложный), тогда вместо установки short_link
, если он еще не был назначен, вы можете просто установить его как значение по умолчанию, например:
class Webpage
include Mongoid::Document
field :short_link, type: String, default: -> { rand(36**8).to_s(36) }
field :actual_link, type: String
end
Это будет вести себя так же, как ваш текущий код предназначен.