2015-11-20 5 views
0

В моем приложении используется friendly_id, но я разделяю процесс регистрации так, чтобы он был разделен на отдельные шаги.Создание дружественного идентификатора с подтверждением false

В результате, когда запись была впервые создана, это делается с отключенной проверкой, а затем последующие шаги процесса регистрации заполняются пустым, а затем на последнем этапе я вызываю обновление, которое проверяет на всякий случай что-то было пропущено на этом пути.

К сожалению, для моей записи не создано никакого слизняков. Из некоторого копания, похоже, что создается дружественный идентификатор before_validation. Так что его никогда не называют!

Как я могу обойти это?

Я видел в документах, что вы можете установить пул на нуль, а затем сохранить его, и он будет сгенерирован, но когда я это сделаю перед вызовом обновления, он выдает сообщение проверки, потому что пуля равна нулю! Я также пробовал следующее, прежде чем вызывать обновление, но все же без радости:

if @channel.slug.blank? 
    @channel.slug = nil 
    @channel.save 
end 

Любые мысли о том, что я могу сделать?

ответ

0

Я установил его в конце, вам нужно добавить! после того, как сохранить, так что следующие работали:

if @channel.slug.blank? 
    @channel.slug = nil 
    @channel.save! 
end 

бит стыда я должен сделать дополнительный вызов DB но, по крайней мере, это работает!

Большое спасибо за те, которые смотрели

3

Вы можете вызвать на friendly_id поколение вручную, делая

object.send :set_slug 

, а затем сохранить без проверки

object.save(:validate => false)