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

28 lines
455 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)
ApiToken.where(token: token).first
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.dummy?
end
end