使用validate false创建友好ID

Dav*_*ery 1 friendly-id ruby-on-rails-4

我正在friendly_id我的应用程序中使用,但我正在拆分注册过程,以便将其拆分为单独的步骤.

因此,当首次创建记录时,它会在禁用验证的情况下完成,然后注册过程的后续步骤填写空白,然后在最后一步,我调用更新,以便在任何错过的情况下进行验证一路上.

不幸的是,虽然没有为我的记录创建slu .. 从一些挖掘中,似乎正在生成友好ID before_validation.所以它永远不会被召唤!

我怎么能绕过这个?

我在文档中看到你可以将slug设置为nil,然后将其保存并重新生成,但是当我在调用update之前执行此操作时,它会抛出一条验证消息,因为slug是零!在调用更新之前我还尝试了以下操作,但仍然没有任何乐趣:

if @channel.slug.blank?
  @channel.slug = nil
  @channel.save
end
Run Code Online (Sandbox Code Playgroud)

关于我能做什么的任何想法?

Awi*_*eet 8

您可以手动触发friendly_id生成

object.send :set_slug 
Run Code Online (Sandbox Code Playgroud)

然后保存而不验证

object.save(:validate => false)
Run Code Online (Sandbox Code Playgroud)