-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
を使用して試してみました。私のプロジェクトでは何も変わりません。何かアドバイス
私は理由を理解していないが、これは、完璧に動作します。私のコントローラには他の方法があります(私は、同じコントローラにupdate_with_password(user_params) '@user = current_user'または' find(params [:id]) 'を使用できるupdateメソッドを持っています。あなたはとにかく! –