У меня есть этот ток перед фильтром в моем user_controller
before_filter :authenticate_usergroup, :except => [:edit, :update, :show]
Он отлично работает, просто позволяя пользователю редактировать свою информацию, но не имея возможности видеть всех пользователей, но я обнаружил, что, просто изменив свой «id» в URL-адресе, они также могут редактировать информацию других пользователей.
Как я могу разрешить функции :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