2016-09-07 3 views
-1

私のユーザーモデルの破壊方法とは別にすべてが正常に機能しています。 Friendly_IDの宝石と関係があるようになった今、私は大丈夫です。Ruby on Rails - フレンドリーID - Idは、スラッグを破壊する方法として処理されます。

パスワードが必要な場合は、invalid passwordのエラーが表示されます。 パスワードを要求しない場合、Userは「明らかに」削除されますが、そうではありません。 (私のflash[:success]対応するリダイレクトと番組)

Serverのログ:

はここ
Processing by UsersController#destroy as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"SkfqooVdKgfsgoL78+yZDxSYoTJNqzUfmyWfGTv8LOxSEObnaKEhip837yrEK5bHVO0HJ/6dmKHqUZmiiWoqDg==", "user"=>{"current_password"=>"[FILTERED]"}, "commit"=>"Delete", "locale"=>"en", "id"=>"e2dc"} 

IDが「e2dc」として示されている代わりに20の本当のID(e2dcはこの電流のユーザ名とスラグでありますユーザー)

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :username, use: [:slugged, :finders] 
end 

class UsersController < ApplicationController 

    def destroy 
    @user = current_user 
    @user.id = params[:user_id] 
    if @user.destroy_with_password(user_params) 
     redirect_to feedbacks_url, notice: "User deleted." 
    else 
     render "account" 
     flash.now[:notice] = @user.errors.full_messages 
    end 
    end 
end 

<%= simple_form_for(@user, :method => :delete) do |f| %> 
    <%= f.input :current_password, autocomplete: "off", required: true %> 
    <%= f.button :submit, "Delete" %> 
<% end %> 

私は運なしUser.friendly.findを使用して試してみました。私のプロジェクトでは何も変わりません。何かアドバイス

答えて

1

ため

おかげで、次のことを試してみてください。

def destroy 
    @user = User.find(params[:id]) 

    if @user.destroy_with_password(params[:user][:current_password]) 
    redirect_to feedbacks_url, notice: "User deleted." 
    else 
    flash.now[:notice] = @user.errors.full_messages 
    render "account" 
    end 
end 
+0

私は理由を理解していないが、これは、完璧に動作します。私のコントローラには他の方法があります(私は、同じコントローラにupdate_with_password(user_params) '@user = current_user'または' find(params [:id]) 'を使用できるupdateメソッドを持っています。あなたはとにかく! –

関連する問題