2013-01-16 61 views
0

我希望允許用戶在不使用Devise和/或Cancan的情況下編輯他們的帳戶,只允許他們的帳戶。授權用戶使用Rails編輯他們的帳戶

我已經中application_controller如下:

helper_method :current_user 
helper_method :require_proprio 

private 

def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
end 

def require_proprio 
    unless current_user == (params[:id]) 
     render :file => "#{Rails.root}/public/422", :status => 500 
    end 
end 

這裏的users_controller

before_filter :require_proprio , :only => [ :edit, :update] 

但是,當我與user.id = 10連接,例如,我無法訪問頁面http://localhost:3000/users/10/edit。出現頁面public/422。我也嘗試訪問http://localhost:3000/users/11/edit,結果是一樣的(public/422)。

有人有我能解決它的方法的想法嗎?謝謝

回答

2
unless current_user == (params[:id]) 

current_user是一個對象,所以這永遠不會是真的。嘗試:

unless current_user.id == params.fetch(:id).to_i 
+0

它的工作原理。非常感謝。我必須等待十分鐘才能接受你的回答。所以我會在11分鐘後回來。 –