使用 validate false 创建友好 ID
Creating a Friendly ID with validate false
我在我的应用程序中使用 friendly_id
,但我将注册过程拆分为多个单独的步骤。
因此,当第一次创建记录时,它是在禁用验证的情况下完成的,然后注册过程的后续步骤填充空白,然后在最后一步,我调用更新,它只在以防万一一路上遗漏了什么。
不幸的是,没有为我的记录创建 slug。通过一些挖掘,似乎正在生成友好的 id before_validation
。所以它永远不会被调用!
我该如何解决这个问题?
我在文档中看到您可以将 slug 设置为 nil 然后保存它,它将重新生成,但是当我在调用更新之前这样做时,它会抛出一条验证消息,因为 slug 为 nil! !在调用更新之前我也尝试了以下但仍然没有快乐:
if @channel.slug.blank?
@channel.slug = nil
@channel.save
end
对我能做什么有什么想法吗?
我最后修好了,你需要加一个!保存后,以下工作:
if @channel.slug.blank?
@channel.slug = nil
@channel.save!
end
有点遗憾,我不得不进行额外的数据库调用,但至少它在工作!
非常感谢看过的人
您可以通过执行
手动触发 friendly_id 生成
object.send :set_slug
然后不验证直接保存
object.save(:validate => false)
我在我的应用程序中使用 friendly_id
,但我将注册过程拆分为多个单独的步骤。
因此,当第一次创建记录时,它是在禁用验证的情况下完成的,然后注册过程的后续步骤填充空白,然后在最后一步,我调用更新,它只在以防万一一路上遗漏了什么。
不幸的是,没有为我的记录创建 slug。通过一些挖掘,似乎正在生成友好的 id before_validation
。所以它永远不会被调用!
我该如何解决这个问题?
我在文档中看到您可以将 slug 设置为 nil 然后保存它,它将重新生成,但是当我在调用更新之前这样做时,它会抛出一条验证消息,因为 slug 为 nil! !在调用更新之前我也尝试了以下但仍然没有快乐:
if @channel.slug.blank?
@channel.slug = nil
@channel.save
end
对我能做什么有什么想法吗?
我最后修好了,你需要加一个!保存后,以下工作:
if @channel.slug.blank?
@channel.slug = nil
@channel.save!
end
有点遗憾,我不得不进行额外的数据库调用,但至少它在工作!
非常感谢看过的人
您可以通过执行
手动触发 friendly_id 生成object.send :set_slug
然后不验证直接保存
object.save(:validate => false)