has_secure_token
は SecureRandom.base58(24)
で 24 バイトのトークンを生成するだけで、長さを指定するオプションはありません。
Pull Request はいくつか出ているようですが、今の所取り込まれるる様子はなし。
(Rails 5 から has_secure_token
は Rails に取り込まれ、元の gem はバックポート用という立ち位置になったので、まずは Rails に PR せよ、という流れ)
- User should be able to provide token size by przbadu · Pull Request #17 · robertomiranda/has_secure_token
- configurable token length by przbadu · Pull Request #24531 · rails/rails
というわけでとりあえずやってしまいたい、というときは対象のクラスに以下のように generate_unique_secure_token
というクラスメソッドをオーバーライドすれば良い。
class Foo < ActiveRecord::Base
class << self
def generate_unique_secure_token
SecureRandom.base58(32)
end
end
end
今回はバイト数を 32 に増やすだけだが、生成方法自体差し替えることもできる。