asciinema.org/app/models/api_token.rb

37 lines
654 B
Ruby

class ApiToken < ActiveRecord::Base
ApiTokenTakenError = Class.new(StandardError)
belongs_to :user
validates :user, :token, presence: true
validates :token, uniqueness: true
def self.for_token(token)
where(token: token).first
end
def self.create_with_tmp_user!(token, username)
transaction do
ApiToken.create!(
token: token,
user: User.create!(temporary_username: username.presence),
)
end
end
def reassign_to(target_user)
return if target_user == user
raise ApiTokenTakenError if taken?
user.merge_to(target_user)
end
private
def taken?
user.confirmed?
end
end