class User < ActiveRecord::Base
has_many :posts, dependent: :destroy
before_save { self.email = email.downcase }
before_create :create_remember_token
validates :name, presence: true, length: { maximum: 30 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, length: { minimum: 6 }
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def create_remember_token
self.remember_token = User.encrypt(User.new_remember_token)
end
end
Y2xhc3MgVXNlciA8IEFjdGl2ZVJlY29yZDo6QmFzZQpoYXNfbWFueSA6cG9zdHMsIGRlcGVuZGVudDogOmRlc3Ryb3kKYmVmb3JlX3NhdmUgeyBzZWxmLmVtYWlsID0gZW1haWwuZG93bmNhc2UgfQpiZWZvcmVfY3JlYXRlIDpjcmVhdGVfcmVtZW1iZXJfdG9rZW4KdmFsaWRhdGVzIDpuYW1lLCAgcHJlc2VuY2U6IHRydWUsIGxlbmd0aDogeyBtYXhpbXVtOiAzMCB9ClZBTElEX0VNQUlMX1JFR0VYID0gL1xBW1x3K1wtLl0rQFthLXpcZFwtLl0rXC5bYS16XStcei9pCnZhbGlkYXRlcyA6ZW1haWwsIHByZXNlbmNlOiB0cnVlLAoJCSAJCSAgZm9ybWF0OiB7IHdpdGg6IFZBTElEX0VNQUlMX1JFR0VYIH0sCgkJICAJCXVuaXF1ZW5lc3M6IHsgY2FzZV9zZW5zaXRpdmU6IGZhbHNlIH0KaGFzX3NlY3VyZV9wYXNzd29yZAp2YWxpZGF0ZXMgOnBhc3N3b3JkLCBsZW5ndGg6IHsgbWluaW11bTogNiB9CgoKCiAgZGVmIFVzZXIubmV3X3JlbWVtYmVyX3Rva2VuCiAgICBTZWN1cmVSYW5kb20udXJsc2FmZV9iYXNlNjQKICBlbmQKCiAgZGVmIFVzZXIuZW5jcnlwdCh0b2tlbikKICAgIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QodG9rZW4udG9fcykKICBlbmQKCiAgcHJpdmF0ZQoKICAgIGRlZiBjcmVhdGVfcmVtZW1iZXJfdG9rZW4KICAgICAgc2VsZi5yZW1lbWJlcl90b2tlbiA9IFVzZXIuZW5jcnlwdChVc2VyLm5ld19yZW1lbWJlcl90b2tlbikKICAgIGVuZAplbmQK