You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/app/models/api_token.rb

31 lines
643 B
Ruby

class ApiToken < ActiveRecord::Base
belongs_to :user
validates :user, :token, presence: true
validates :token, uniqueness: true, format: { with: /\A[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\z/ }
scope :active, -> { where(revoked_at: nil) }
scope :revoked, -> { where('revoked_at IS NOT NULL') }
def self.create_with_tmp_user!(token, username)
transaction do
ApiToken.create!(
token: token,
user: User.create!(temporary_username: username.presence),
)
end
end
def revoke!
update!(revoked_at: Time.now)
end
private
def taken?
user.confirmed?
end
end