Current attribute support to set Current.user per request:

#app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_action :set_current_user, if: :user_signed_in?

  private

  def set_current_user
    Current.user = current_user
  end
end

#app/models/current.rb

class Current < ActiveSupport::CurrentAttributes
  attribute :user
end
  • Now you can get current_user through Current.user in a view or get current_user in a model.

#static_pages/landing_page.html.erb

<%= Current.user.username %>

#app/models/post.rb

class Post < ApplicationRecord
  belongs_to :user, default: -> { Current.user }

  validates :title, presence: true
end

Read more here: (evilmartians/current-everything)