【问题标题】:How do I set slug limit using friendly_id gem?如何使用 friendly_id gem 设置 slug 限制?
【发布时间】:2015-12-27 10:12:54
【问题描述】:

我正在使用friendly_id (4.0.10.1),这是我的课程:

class Article < ActiveRecord::Base

  extend FriendlyId
  friendly_id :name, use: [:slugged, :history]

end

如何为 slug 字段设置 49 个字符的限制? Gem 工作正常,只是我需要设置由 gem 管理的 49 个限制,而不是在代码上添加额外的步骤。

【问题讨论】:

    标签: ruby-on-rails friendly-id


    【解决方案1】:

    您可以使用 Active Record 验证。例如,validates_length_of,在 slug 本身上,或者如果值来自列,则在列上。

    这里有另一个解决方案

    def normalize_friendly_id(string)
      super[0..49]
    end
    

    我刚刚通过谷歌搜索找到了这些。

    https://github.com/norman/friendly_id/issues/190

    【讨论】:

    • 谢谢哥们!!它适用于大多数场景。但是,当两个对象尝试存储相同的 slug 时,就会出现问题。为了通过将这个“--2”添加到字符串的末尾来创建一个新的 slug,它最终的长度是 52 个字符。
    【解决方案2】:

    这是最好的解决方案

     friendly_id :slug_candidates, use: :slugged
    
     def slug_candidates
      [
        :name,
        [:name, :city],
        [:name, :street, :city],
        [:name, :street_number, :street, :city]
      ]
     end 
    

    更多信息在这里https://www.rubydoc.info/github/norman/friendly_id/FriendlyId/Slugged

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 1970-01-01
      • 2015-07-30
      • 2014-03-19
      • 2014-10-22
      • 2014-11-20
      • 1970-01-01
      • 2018-07-15
      • 2012-07-06
      相关资源
      最近更新 更多