1

users_controllerのフィルターの前にこの電流があります

before_filter :authenticate_usergroup, :except => [:edit, :update, :show]

ユーザーが自分の情報を編集できるようにするだけで、すべてのユーザーを表示することはできませんが、URL の「ID」を変更するだけで、他のユーザー情報も編集できることがわかりました。

:edit、:show、および :update 関数のみを現在のユーザーに許可して、自分のレコードを取得するにはどうすればよいですか。現在のユーザーにアクセスできるように、application_controllerにこのメソッドがあります

def current_user
 return unless session[:user_id]
 @current_user ||= User.find_by_id(session[:user_id])
end

#update from users_controller.rb
def update
@user = User.find(params[:id])

respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to @user, :notice => 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render :action => "edit" }
    format.json { render :json => @user.errors, :status => :unprocessable_entity }
  end
end
end
4

2 に答える 2

0

自分の情報にのみアクセスできることを「スコープ」する場合current_user、それは問題ではありません。

だからショーと編集で

@user = current_user

更新アクションでは、次のようなもの current_user.update_attributes(params[:user]) でうまくいくはずです。

于 2012-12-09T03:22:20.127 に答える