[Rails] model 中取得 current_user
施作方式
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
參考
- https://stackoverflow.com/questions/3742785/rails-3-devise-current-user-is-not-accessible-in-a-model#3742981
- https://amitrmohanty.wordpress.com/2014/01/20/how-to-get-current_user-in-model-and-observer-rails/
留言