好奇为什么friendly_id鼓励2个破折号,而不是一个?
感兴趣的是为什么这是默认逻辑。他们为什么选择两个短划线而不是一个?的原因?
答案 0 :(得分: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
我还看到,当我使用历史记录模块并执行创建时,它会通过将序列分隔符附加到末尾来检查更新的段塞。
例如:
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