为什么friendly_id默认为两个破折号?

时间:2012-04-14 00:33:14

标签: ruby-on-rails ruby-on-rails-3 friendly-id

好奇为什么friendly_id鼓励2个破折号,而不是一个?

感兴趣的是为什么这是默认逻辑。他们为什么选择两个短划线而不是一个?的原因?

1 个答案:

答案 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