10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/has_token.rb', line 10
def has_token(*args)
options = args..symbolize_keys
options[:column] = (args.first || :token)
options.reverse_merge!(
:length => 6,
:characters => [('a'..'z'), ('A'..'Z'), ('0'..'9')].map(&:to_a).sum,
:constructor => proc(&:has_token_value),
:to_param => false,
:readonly => true
)
cattr_accessor :has_token_options
return(false) if self.has_token_options.present?
self.has_token_options = options
attr_readonly(options[:column]) if options[:readonly]
define_method(:to_param){ read_attribute(options[:column]) } if options[:to_param]
has_one :global_token, :class_name => 'Token', :as => :parent, :autosave => true, :dependent => :nullify
include InstanceMethods
before_create :set_token
end
|