3

具体的には、Typus で Devise を使用しています。しかし、私の誤解はDeviseの知識にあると思います。

フォームを介して重要なモデルを変更したい場合の機能を実現しようとしています。現在のパスワードを提供して、変更できることを確認する必要があります。

現在、ログインして User モデルのフィールドを変更できます。事前にパスワードを確認することなく、パスワードを含めます。良くない。そのため、current_password をフォームに追加しました。しかし、それは何もしませんでした。次に、current_password の存在を検証しようとしました。それから、それに対する価値を受け入れないようです。

グーグルは私を助けませんでした。関連する投稿はすべて、 current_password を確認するのではなく、削除することに関するものでした。current_password の使い方を誤解していると思います。

洞察を共有したい人はいますか?ありがとう。

4

2 に答える 2

6

パスワード フィールドをフォームに追加する必要があります。その後、コントローラーのアクションで、次を使用してパスワードを検証できます。

user.valid_password?(params[:user][:password])

おそらく、params[:user][:password] を、フォームのパスワードのフィールドのパラメーターの名前に変更する必要があることに注意してください (おそらく単に params[:password])。

それが役に立てば幸い。

于 2011-09-02T09:07:30.903 に答える
5

実際、devise にはこのための組み込みメソッドがあります。

user.update_with_password(params, *options)ここで rdoc を読むことができます。

:current_password が一致する場合はレコード属性を更新し、一致しない場合は :current_password でエラーを返します。また、:password と :password_confirmation が空白の場合は自動的に拒否されます。

于 2012-03-31T00:05:00.810 に答える