31 lines
747 B
Ruby
31 lines
747 B
Ruby
|
# -*- encoding : utf-8 -*-
|
||
|
class Token < ActiveRecord::Base
|
||
|
belongs_to :subject, :polymorphic => true, :touch => true
|
||
|
belongs_to :creator, :class_name => 'User'
|
||
|
belongs_to :updater, :class_name => 'User'
|
||
|
|
||
|
validates :creator_id, :subject_id, :subject_type, :presence => true
|
||
|
|
||
|
default_scope order("#{table_name}.created_at")
|
||
|
|
||
|
before_create :generate_token
|
||
|
|
||
|
attr_accessible :description
|
||
|
|
||
|
state_machine :status, :initial => :active do
|
||
|
event :block do
|
||
|
transition [:active, :blocked] => :blocked
|
||
|
end
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
|
||
|
def generate_token
|
||
|
self.authentication_token = loop do
|
||
|
token = SecureRandom.urlsafe_base64(64)
|
||
|
break token unless Token.where(:authentication_token => token).exists?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|