Devise допускает это для токена через token_authenticable, однако я не нашел драгоценный камень, который делает это, поэтому мои модели обычно выглядят так:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :token_authenticatable, :confirmable
before_save :ensure_authentication_token
before_save :create_secret_token
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
private
def create_secret_token
self.secret_token = ActiveSupport::SecureRandom.base64(20).tr('+/=', '-_ ').strip.delete("\n") unless self.secret_token
end
end
Строка генератора secret_token гарантирует, что символы + / = заменяются, а затем удаляются пробелы. Символы "+ / =" могут быть сложны для использования при использовании RESTful API:
ActiveSupport::SecureRandom.base64(20).tr('+/=', '-_ ').strip.delete("\n")