簡體   English   中英

Rails 4將Cancancan遷移到Pundit

[英]Rails 4 migrate cancancan to pundit

我正在嘗試遷移到Pundit,但遇到了一些麻煩。

我有一個用戶模型和一個照片模型。

用戶有很多照片,照片是用戶的嵌套資源。 在我的控制器中

@user = User.find(params[:user_id])
@photos = @user.photos

在我的康康能力課程中,

can :create, Photo, :user => { :id => user.id }

並認為我會用

<% if can? :create, @user => Photo %>

有人知道如何使用Pundit正確執行此操作嗎?

先感謝您

Pundit通過提供對象的授權來處理與CanCan不同的授權。 首先,您需要編寫一個PhotoPolicy:

class PhotoPolicy
  attr_reader :user, :photo

  def create?
    photo.user.id == user.id # Use photo.user_id if you have that column available 
  end    
end

然后,您可以執行以下操作:

<% if policy(@photo).create? %>

請注意,我在一張Photo上稱呼它。 如果您希望獲取用戶有權訪問的所有照片的策略,則需要使用范圍 讓我知道是否是這種情況,我將更新答案。

暫無
暫無

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

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