好奇为什么友好ID 鼓励 2 个破折号,而不是 1 个?
我很感兴趣为什么这是默认逻辑。为什么他们选择两个破折号而不是一个?
好奇为什么友好ID 鼓励 2 个破折号,而不是 1 个?
我很感兴趣为什么这是默认逻辑。为什么他们选择两个破折号而不是一个?
我最近考虑了这一点,并尝试将序列分隔符更改为 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