class Administrateur < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :gestionnaires has_many :procedures before_save :ensure_api_token def ensure_api_token if api_token.nil? self.api_token = generate_api_token end end def renew_api_token update_attributes(api_token: generate_api_token) end private def generate_api_token loop do token = SecureRandom.hex(20) break token unless Administrateur.find_by(api_token: token) end end end