1

好奇为什么友好ID 鼓励 2 个破折号,而不是 1 个?

我很感兴趣为什么这是默认逻辑。为什么他们选择两个破折号而不是一个?

4

1 回答 1

3

我最近考虑了这一点,并尝试将序列分隔符更改为 1 破折号,而 FriendlyId 抱怨,显然是有正当理由的。

此链接不能准确回答您的问题: https ://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L87-92

但是,这里有更多信息: https ://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L293-305

我还看到,当我使用历史模块并执行创建时,它会通过在末尾附加一个序列分隔符来检查最近的 slug。

例如:

Category.create(:name => 'foo')

返回以下 sql 查询

(0.1ms)  BEGIN
FriendlyId::Slug Load (49.9ms)  SELECT "friendly_id_slugs".* FROM "friendly_id_slugs" WHERE "friendly_id_slugs"."sluggable_type" = 'Category' AND (slug = 'foo' OR slug LIKE 'foo--%') ORDER BY LENGTH(slug) DESC, slug DESC LIMIT 1

如果您将序列分隔符更改为 1 破折号,它将匹配带有 'foo-bar' 和 'foo-moo' 等 slug 的项目......

希望这有助于满足您的好奇心:D

于 2012-04-15T01:35:23.493 回答