forked from zerohistory/toystore
-
Notifications
You must be signed in to change notification settings - Fork 12
Identity
jnunemaker edited this page Feb 12, 2012
·
3 revisions
By default, Toystore uses uuid's for keys, mostly because they are practically unique across time, models, servers and processes. UUID's are the default, but they are not the only option.
You can also create your own key factories quite easily:
class NamespacedUUIDKeyFactory < Toy::Identity::AbstractKeyFactory
# How should the id be typecast
def key_type
String
end
# How do we generate the next key
# object is the record need an id
def next_key(object)
[object.class.name, SimpleUUID::UUID.new.to_guid].join(':')
end
end
class User
include Toy::Store
key NamespacedUUIDKeyFactory.new
end
pp User.new.id # "User:ca5ef5c2-3183-11e0-9035-5dd876820c2a"
This sets the key factory on a per model basis. You can also change the default key factory for every Toystore model.
class NamespacedUUIDKeyFactory < Toy::Identity::AbstractKeyFactory
# How should the id be typecast
def key_type
String
end
# How do we generate the next key
# object is the record need an id
def next_key(object)
[object.class.name, SimpleUUID::UUID.new.to_guid].join(':')
end
end
Toy.key_factory = NamespacedUUIDKeyFactory.new
class Game
include Toy::Store
end
pp Game.new.id # "Game:08dd6ce8-3184-11e0-80b5-28885337cc2d"