繁体   English   中英

Friendly_id gem,较小的哈希?

[英]friendly_id gem, smaller hash?

鉴于我的 slug 候选是my title ,并且它已经被使用,slug 将返回如下内容: my-title-49c9938b-ece5-4175-a4a4-0bb2b0f26a27

是否可以让friendly_id返回较小的哈希值? 喜欢: my-title-705d62eea60a

在这种情况下,您可以创建自己的方法,然后将其传递给friendly_id 您可以在那里定义 FriendlyId 将使用的组合,以便将唯一标识符作为 slug 分配给您的记录。

例如:

friendly_id :column_candidates, use: :slugged

def column_candidates
  [
    :name,
    [:name, :another_column],
    [...more columns combinated as a fallback]
  ]
end

如果在对column_candidates每个列组合进行评估后, FriendlyId 无法创建唯一记录(通过 slug),那么它无论如何都会附加一个 UUID。

您可以自由地将您想要的对象添加到column_candidates ,可以是字符串、过程、lambda 或符号。 此外,方法名称不必完全如此,您可以根据需要对其进行修改。

作为最后一个资源,如果无法创建唯一标识符,您可以依靠创建自己的短并且始终无法使用Digest::SHA1成为唯一的哈希:

...
[-> { Digest::SHA1.hexdigest(name).chars.sample(6).join }]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM