Skip to content

Instantly share code, notes, and snippets.

@Veske
Last active December 31, 2015 12:49
Show Gist options
  • Save Veske/7988593 to your computer and use it in GitHub Desktop.
Save Veske/7988593 to your computer and use it in GitHub Desktop.
class Post < ActiveRecord::Base
belongs_to :user
default_scope -> { order('created_at DESC') }
validates :content, presence: true, length: {maximum: 140}
validates :user_id, presence: true
end
module SessionsHelper
def sign_in(user)
remember_token = User.new_remember_token
cookies.permanent[:remember_token] = remember_token
user.update_attribute(:remember_token, User.encrypt(remember_token))
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
def current_user=(user)
@current_user = user
end
def current_user
remember_token = User.encrypt(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def current_user?(user)
user == current_user
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.url if request.get?
end
def signed_in?
!current_user.nil?
end
end
class User < ActiveRecord::Base
has_many :posts, dependent: :destroy
before_save { self.email = email.downcase}
before_create :create_remember_token
has_secure_password
before_validation :downcase_email
validates :name, presence: true, length: {maximum: 50}
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}
validates :password, length: {minimum: 3}
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.encrypt(token)
Digest::SHA1.hexdigest(token.to_s)
end
private
def downcase_email
self.remember_token = User.encrypt(User.new_remember_token)
self.email = self.email.downcase if self.email.present?
end
def create_remember_token
self.remember_token = User.encrypt(User.new_remember_token)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment