0

Devise や Cancan を使用せずに、ユーザーが自分のアカウントのみを編集できるようにしたいと考えています。

私は次のものを持っています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)。

誰かが私がそれを解決できる方法を知っていますか? ありがとう

4

1 に答える 1

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

current_userはオブジェクトであるため、これが真になることはありません。試す:

unless current_user.id == params.fetch(:id).to_i
于 2013-01-16T15:30:48.393 に答える