class PrefixedIds::PrefixId

def decode(id, fallback: false)

decode returns an array
def decode(id, fallback: false)
  fallback_value = fallback ? id : nil
  _, id_without_prefix = PrefixedIds.split_id(id, @delimiter)
  decoded_hashid = @hashids.decode(id_without_prefix)
  if !valid?(decoded_hashid)
    fallback_value
  else
    _, *ids = decoded_hashid
    (ids.size == 1) ? ids.first : ids
  end
end

def encode(id)

def encode(id)
  return if id.nil?
  @prefix + @delimiter + @hashids.encode([TOKEN] + Array.wrap(id))
end

def initialize(model, prefix, salt: PrefixedIds.salt, minimum_length: PrefixedIds.minimum_length, alphabet: PrefixedIds.alphabet, delimiter: PrefixedIds.delimiter, **options)

def initialize(model, prefix, salt: PrefixedIds.salt, minimum_length: PrefixedIds.minimum_length, alphabet: PrefixedIds.alphabet, delimiter: PrefixedIds.delimiter, **options)
  @prefix = prefix.to_s
  @delimiter = delimiter.to_s
  @hashids = Hashids.new("#{model.table_name}#{salt}", minimum_length, alphabet)
end

def valid?(decoded_hashid)

def valid?(decoded_hashid)
  decoded_hashid.size >= 2 && decoded_hashid.first == TOKEN
end