0

In rails controller code I mostly see something like below:

class UsersController < ApplicationController
  before_action :set_user

  def some_action
  end

  private

  def set_user
    @user ||= User.find params[:id]
  end
end

So, I would actually like to know that,

i) What does ||= do?
ii) What are it's use cases? and,
iii) mainly, Is doing

@user ||= User.find params[:id]

means that @user object is persisted between the http requests?

roarfromror
  • 276
  • 1
  • 2
  • 11
  • 1
    iii) No, [each request makes a new controller instance](https://stackoverflow.com/questions/14172986/why-does-rails-create-a-controller-for-every-request), so `@user` is not persisted. – Amadan Feb 26 '20 at 10:58
  • 2
    To give a clear answer: Here the `||=` doesn't make any sense unless you call `set_user` multiple times during the _same_ request. – spickermann Feb 26 '20 at 11:43

0 Answers0