Sha256: a677f93ca66f957f51975ba2b6e67c851b33dcd84213beca552df1fd8df7741b
Contents?: true
Size: 898 Bytes
Versions: 11
Compression:
Stored size: 898 Bytes
Contents
module Toy module Identity extend ActiveSupport::Concern included do key Toy.key_factory end module ClassMethods def key(name_or_factory = :uuid) @key_factory = if name_or_factory == :uuid UUIDKeyFactory.new else if name_or_factory.respond_to?(:next_key) && name_or_factory.respond_to?(:key_type) name_or_factory else raise InvalidKeyFactory.new(name_or_factory) end end attribute :id, @key_factory.key_type @key_factory end def key_factory @key_factory || raise('Set your key_factory using key(...)') end def key_type @key_factory.key_type end def next_key(object = nil) @key_factory.next_key(object).tap do |key| raise InvalidKey.new if key.nil? end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems