Module: HasTokenField

Defined in:
lib/has_token_field.rb,
lib/has_token_field/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#has_token_field(name) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/has_token_field.rb', line 5

def has_token_field(name)
  define_singleton_method :make_token do
    loop do
      token = SecureRandom.urlsafe_base64(15).tr('lIO0', 'sxyz')
      break token unless self.where("#{name}" => token).first
    end
  end

  self.send(:before_save, "ensure_#{name}")

  define_method "ensure_#{name}" do
    self[name] = self.class.make_token if self[name].blank? && self.class.column_names.include?(name.to_s)
  end
end