没有将字符串隐式转换为整数 base62 编码 rails

no implicit conversion of String into Integer base62 encode rails

uuid = Digest::SHA256.digest(SecureRandom.uuid)
id = Base62.encode(uuid)

没有将字符串隐式转换为整数

行=id = Base62.encode(uuid)

我认为您的代码无法正常工作。原因如下:

Base62.encode(num) 采用 base10 数字并将其转换为 base62 字符串。这对你来说是个问题:

Digest::SHA256.digest(SecureRandom.uuid)
# => "\e\x1F\xD6yby\x02o\f)\xA2\x91\xD4\xFB\x85jd\xE0\xF7\xECtd\x8E\xA6\x9Ez\x99\xD8>\x04\nT"

Returns一个字符串。

如果您查看 base62-rb gem 中的代码以及方法上方的注释,您可以看到它正在将字符串与整数进行比较,这是我在执行时遇到的错误尝试复制这个:

ArgumentError: comparison of String with 0 failed

这是来自 gem 的方法:

# From base62-rb.rb line 8-20:

  # Encodes base10 (decimal) number to base62 string.
  def self.encode(num)
    return "0" if num == 0
    return nil if num < 0

    str = ""
    while num > 0
      # prepend base62 charaters
      str = KEYS[num % BASE] + str
      num = num / BASE
    end
    str
  end

当然,所有这些都是基于您正在使用 base62-rb gem 的事实。那么,也许您可​​以给我们一些背景信息,让我们知道您尝试了什么?

for pass string to base62

uuid = SecureRandom.uuid.gsub("-", "").hex
@id = uuid.base62_encode