【问题标题】:Creating a Friendly ID with validate false使用 validate false 创建友好 ID
【发布时间】:2015-11-20 19:13:16
【问题描述】:

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

因此,当第一次创建记录时,它是在禁用验证的情况下完成的,然后注册过程的后续步骤填写空白,然后在最后一步,我调用更新来验证以防万一一路上错过了。

不幸的是,虽然没有为我的记录创建 slug。通过一些挖掘,似乎正在生成友好 ID before_validation。所以它永远不会被调用!

我该如何解决这个问题?

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

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

对我能做什么有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-4 friendly-id


    【解决方案1】:

    您可以通过执行手动触发friendly_id生成

    object.send :set_slug 
    

    然后不经验证就保存

    object.save(:validate => false)
    

    【讨论】:

      【解决方案2】:

      我最后修好了,你需要加一个!保存后,以下工作:

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

      有点遗憾,我必须进行额外的数据库调用,但至少它可以正常工作!

      非常感谢那些看过的人

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 2011-06-11
        • 2013-06-02
        • 2019-10-17
        • 2011-03-03
        • 1970-01-01
        • 1970-01-01
        • 2016-06-02
        • 1970-01-01
        相关资源
        最近更新 更多