我正在使用Rails,Devise和Mongoid。Rails + Devise:如何限制用戶編輯不屬於他的記錄
用戶只能有一個項目(has_one :profile
),但所有用戶(和未經過驗證的用戶)都可以看到項目列表(我有這個工作)。當用戶登錄後,他們會看到項目旁邊的「編輯和刪除」按鈕(通過將這些按鈕包裝在<% if user_signed_in? %>
中)。但是,登錄用戶可以在所有項目旁邊看到這些按鈕,並且可以編輯或刪除所有項目。
如何限制登錄用戶只能編輯他的項目?
作爲獎勵,是否可以在屬於已登錄用戶的項目中顯示特定內容或html(例如,「這是您的項目」或項目的html附加的類)?
您描述的條件可以做到這一點,但您可以檢查出https://github.com/ryanb/cancan/以獲得更穩健的解決方案 – rjz
我不確定我是否應該使用can can for that or not,我想我應該。 – sevens
如果user_signed_in,您可以添加另一個條件<%?和project.user == current_user%>,但CanCan是一個更好更安全的解決方案,您希望在控制器/模型級別上完成權限,而不是視圖。 – iouri