Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用友好id gem的下划线``配置序列分隔符_Ruby On Rails_Ruby On Rails 3.2_Friendly Id - Fatal编程技术网

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
,依此类推。@MaxWilliams
cached\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