I am using the friendly_id gem version 3.3.3.0
in Rails 3.2
I have defined friendly id like following :-
class User < ActiveRecord::Base
has_friendly_id :name, use: :slugged, sequence_separator: '_', max_length: 32
end
I have used sequence separator as _
but when I execute query on console it was separating using _
(underscore) but it works fines with --
(double dash)
I have a 3 user with cached_slug as user_1
user_2
and user_3
when I am trying to find records with cached slug it generates following query.
using - _
(underscore)
for - `user_1`
User.find("user_1")
SELECT sluggable_id FROM slugs WHERE ((slugs.sluggable_type = 'User' AND slugs.name = 'user_1' 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_2' AND slugs.sequence = 1))
for - `user_3`
User.find("user_3")
SELECT sluggable_id FROM slugs WHERE ((slugs.sluggable_type = 'User' AND slugs.name = 'user_3' AND slugs.sequence = 1))
Its not taking sequence from the from the cached slug.
using - --
(double dash)
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))
--
(double dash) identifies the sequence properly
let me know if I am missing anything to include.
**Update - **
I debug gem code and found that it refers to sequence_separator
as --
instead of which I have defined in model that is _
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