0

Rails3.2でパスワードを確認してパスワードを検証する方法

私のコードは機能しません

あなたは私のエラーがどこにあるかを知ることができます

コントローラのコードを変更して、さまざまなバリエーションを試しました。

パスワードは保存されますが、パスワード確認フィールドとパスワードフィールドには検証されません。

私を助けてください、私を助けてください)))

ビュー

<%= form_for :password, :url => { :action => "change_password" }, :id => @user do |f| %> 
<% if @user.errors.any? %>
    <div class="error_messages">
      <h2>Form is invalid</h2>
      <ul>
        <% for message in @user.errors.full_messages %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Save", :class => "button blue" %>
<% end %> 

ユーザーコントローラー

  def change_password
    @page_title = "Changing Zetfon account password"
    @user = current_user
    if request.post?

       @user.password = Digest::SHA1.hexdigest(params[:password][:password]) 
    if @user.save
        redirect_to :action => 'profile'
        flash[:status] = "Your password was changed. Next time you sign in use your new password."
      else
     flash[:status] = _('Your password not changed')
        render :action => "change_password"
      end
    end
  end

ユーザーモデル

  validates_confirmation_of :password
  attr_accessible :password_confirmation
  attr_accessor :password
4

2 に答える 2

11

モデルに次の行を追加します

    validates :password, confirmation: true
于 2014-01-31T05:36:50.413 に答える
3

単に使用するには遅すぎますhas_secure_passwordか? これについては、RailsCast で学習できます。

http://railscasts.com/episodes/270-authentication-in-rails-3-1

なぜあなたが持っているのかわかりませんif request.post?。ルートで決まってるじゃないですか。

のドキュメントによると、validates_confirmation_of次を追加する必要があると思います。

validates_presence_of :password_confirmation, :if => :password_changed?

ドキュメントは次のとおりです。

http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_confirmation_of

ドキュメントは、どちらも必要ないことを示しているようですattr_accessible :password_confirmation

それが役立つことを願っています。

于 2013-01-30T19:56:07.987 に答える