A quick note on improving Rails performance using Memoization. Memoization is the process of storing a computed value to avoid duplicated work by future calls. # originally, will search + retrieve from database def current_user User.find(session[:user_id]) end # now, search + retrieve from memory (fast) def current_user # NOTE: this will fail on conditional assignment, # e.g. the returning value is nil or false. @current_user ||= User.find(session[:user_id]) end # now (improved), handle false or nil def current_user @current_user = User.find(session[:user_id]) unless defined?(@current_user) end # with parameterized methods, use it wisely. def user(name) return @users[name] unless @results[name].nil? @users[name] = User.where(name: name) end References The Basics of Ruby Memoization - Gavin Miller Advanced Memoization in Ruby - Gavin Miller #137 Memoization (revised) - RailsCasts