Vous pouvez essayer quelque chose comme ça :
class Article
include Mongoid::Document
identity :type => Integer
before_create :assign_id
def to_param
id.to_s
end
private
def assign_id
self.id = Sequence.generate_id(:article)
end
end
class Sequence
include Mongoid::Document
field :object
field :last_id, type => Integer
def self.generate_id(object)
@seq=where(:object => object).first || create(:object => object)
@seq.inc(:last_id,1)
end
end
Je n'ai pas essayé cette approche exactement (en l'utilisant avec des identifiants internes), mais je suis presque sûr que cela devrait fonctionner. Regardez mon application ici : https://github.com/daekrist/Mongologue J'ai ajouté un identifiant "visible" appelé pid à mes modèles de messages et de commentaires. J'utilise également l'identifiant textuel pour le modèle Tag.