簡體   English   中英

Rails Can只能顯示用戶創建的數據

[英]Rails CanCan only show data that user created

我正在使用Devise注冊帳戶和登錄/注銷。 我要添加的下一個功能是僅顯示為給定用戶輸入的數據。 例如,如果我創建一個新的“東西”(在我的情況下為客戶端,在/ clients / new),我只希望創建該東西的人能夠查看它。 現在,如果我登錄並創建一個新客戶端,然后以其他用戶身份注銷並重新登錄,則可以看到以其他用戶身份創建的客戶端。 應該對此加以限制,以使作者是唯一可以閱讀,更新和銷毀其客戶的人。

我現在已經看了3次CanCan上的Ryan Bate的截屏視頻 ,但似乎只涉及將其設置為不同的角色,而不是根據作者來限制內容。

我該如何使用CanCan做到這一點?

我當前的ability.rb除了空的initialize(user)方法外什么都沒有。

我已經在該方法中嘗試過此方法:

can :update, Client do |client|
    client.try(:user) == user
end

<% if can? :update, @client %> ... <% end %>

在索引視圖中顯示客戶端的循環周圍,但無濟於事。

我認為使用CanCan過濾結果不是最佳解決方案。 如果用戶為“ has_many”客戶端,則在您的控制器方法中僅查詢用戶的客戶端:

@clients = current_user.clients

試試這個

def initialize(user)
  can :update, Client, :user_id => user.id
end

來自Cancan Wiki

暫無
暫無

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

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