2013-11-27 111 views
0

我向我的用戶表中添加了一個admin布爾列,並將我的用戶切換爲yes。我改變了下面的代碼,使「編輯」按鈕,顯示了德管理的所有引腳:允許管理員編輯其他用戶的針腳 - 導軌

<% if current_user == pin.user || current_user.admin? %> 
    <p> 
     <%= link_to 'Edit', edit_pin_path(pin) %> 
     <%= link_to content_tag(:i, "", class:"icon-trash"), pin, method: :delete, data: { confirm: 'Are you sure?' } %> 
    </p> 
<% end %> 

當我嘗試編輯針,我得到一個錯誤:無法與ID找到引腳= 37-外部[WHERE「pins」。「user_id」= 1] 我相信這是因爲pins控制器,但我還沒有想出如何正確地更改它以允許管理員進行編輯。這裏是我的控制器:

def edit 
@pin = current_user.pins.find(params[:id]) 

我有一種感覺,這是一個簡單的辦法是,我只是缺少。

回答

0

你是範圍引腳到current_user這就是你得到錯誤的原因。嘗試改變這種發現引腳

klass = Pin 
klass = klass.where(user_id: current_user.id) unless current_user.admin? 
@pin = klass.find(params[:id]) 

或者代碼,如果這是你將要使用在很多地方的東西,它可能是好的定義一個類的方法,而不是

# app/models/pin.rb 
def self.find_for_user(pin_id, user) 
    user.admin? ? find(pin_id) : user.pins.find(pin_id) 
end 

# in your controller 
@pin = Pin.find_for_user(params[:id], current_user) 
+0

你第二個建議工作!非常感謝。 –

相關問題