簡體   English   中英

從gem訪問current_user

[英]Access current_user from a gem

您可能聽說過Pundit。 https://github.com/elabs/pundit基本上,這是一個授權工具。

我想知道的是,它如何訪問其類中的變量current_user

我不知道如何,但是@useruser在某種程度上都等於current_user

class PostPolicy
  attr_reader :user, :post

  def initialize(user, post)
    @user = user
    @post = post
  end

  def update?
    user.admin? or not post.published?
  end
end

我們在這個類中也有post變量。 我們可以通過運行來訪問它

def publish
  @post = Post.find(params[:id])
  authorize @post
end

在行動中。

要安裝Pundit,您需要將該模塊包含在應用程序控制器中:

class ApplicationController < ActionController::Base
    include Pundit
end

但是,我仍然看不到該類如何“查詢” current_user的控制器,以及如何授權將變量(post)提供給該類。 請回答這兩個問題:)

PostPolicy類不查詢任何內容。

authorize方法是一個控制器實例方法,因此它只能調用current_user 您已經傳遞了@post ,它用於確定要使用的策略類。 然后,它創建該類的新實例,並傳遞current_user@post

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM