Ruby on rails 如何使用友好id gem的下划线``配置序列分隔符
我正在Ruby on rails 如何使用友好id gem的下划线``配置序列分隔符,ruby-on-rails,ruby-on-rails-3.2,friendly-id,Ruby On Rails,Ruby On Rails 3.2,Friendly Id,我正在rails3.2 我定义了如下友好id:- class User < ActiveRecord::Base has_friendly_id :name, use: :slugged, sequence_separator: '_', max_length: 32 end 它不是从缓存的slug中获取序列 使用---(双破折号) --(双破折号)正确识别序列 如果我遗漏了什么,请告诉我 **更新-** 我调试了gem代码,发现它将序列\u分隔符引用为--,而不是我在模型中定
rails3.2
我定义了如下友好id:-
class User < ActiveRecord::Base
has_friendly_id :name, use: :slugged, sequence_separator: '_', max_length: 32
end
它不是从缓存的slug中获取序列
使用---
(双破折号)
--
(双破折号)正确识别序列
如果我遗漏了什么,请告诉我
**更新-**
我调试了gem代码,发现它将序列\u分隔符
引用为--
,而不是我在模型中定义的
class String
def parse_friendly_id(separator = nil)
separator ||= FriendlyId::Configuration::DEFAULTS[:sequence_separator]
name, sequence = split(/#{Regexp.escape(separator)}(\d+)?\z/)
return name, (sequence ||= 1).to_i
end
end
我不明白这个问题?创建段塞时使用序列分离器。对于“缓存的段塞”,它会使用它创建的段塞名称。因此,对于
user\u 1
它会查找一个名为user\u 1
的slug,您能解释一下“缓存的\u slug”是什么吗?这些查询看起来运行得很好。@j-dexx我已经更新了我的问题。对于user\u 1
它应该搜索段塞名称为user
和序列号1
,对于user\u 2
它应该搜索段塞名称为user
和序列号2
,依此类推。@MaxWilliamscached\u slug
列用于存储最新的段塞。
for - `user--1`
User.find("user--1")
SELECT sluggable_id FROM slugs WHERE ((slugs.sluggable_type = 'User' AND slugs.name = 'user' AND slugs.sequence = 1))
for - `user--2`
User.find("user--2")
SELECT sluggable_id FROM slugs WHERE ((slugs.sluggable_type = 'User' AND slugs.name = 'user' AND slugs.sequence = 2))
for - `user--3`
User.find("user--3")
SELECT sluggable_id FROM slugs WHERE ((slugs.sluggable_type = 'User' AND slugs.name = 'user' AND slugs.sequence =3))
class String
def parse_friendly_id(separator = nil)
separator ||= FriendlyId::Configuration::DEFAULTS[:sequence_separator]
name, sequence = split(/#{Regexp.escape(separator)}(\d+)?\z/)
return name, (sequence ||= 1).to_i
end
end