少於 1 分鐘閱讀

施作方式

1. 設定 User.current

user.rb

class User < ApplicationRecord
  def self.current
    Thread.current[:user]
  end
  
  def self.current=(user)
    Thread.current[:user] = user
  end
end

application_controller.rb

class ApplicationController < ActionController::Base
  before_action :set_current_user

  def set_current_user
    User.current = current_user 
  end
end

參考

  1. https://stackoverflow.com/questions/3742785/rails-3-devise-current-user-is-not-accessible-in-a-model#3742981
  2. https://amitrmohanty.wordpress.com/2014/01/20/how-to-get-current_user-in-model-and-observer-rails/

更新時間:

留言