0

私は現在、 Email only signupというラベルの付いたDeviseのチュートリアルに基づいてプロジェクトのセットアップに取り組んでおり、回避できない特定のエラーが1つ発生しているようです。追加しconfirmた . 私はすでにDeviseに使用するように伝えました

devise_for :users, :controllers => {:confirmations => 'confirmations'}

ユーザープラグイン用ですが、コントローラーを無視しています。

confirms_controller.rb というコントローラーがあり、次のコードが含まれています。

class ConfirmationsController < Devise::ConfirmationsController
  def show
    self.resource = resource_class.find_by_confirmation_token(params[:confirmation_token])
    super if resource.confirmed? 
  end

  def confirm
    self.resource = resource_class.find_by_confirmation_token(params[resource_name][:confirmation_token])
    if resource.update_attributes(params[resource_name].except(:confirmation_token)) && resource.password_match?
      self.resource = resource_class.confirm_by_token(params[resource_name][:confirmation_token])
      set_flash_message :notice, :confirmed
      sign_in_and_redirect(resource_name, resource)
    else
      render :action => "show"
  end
end

正確なエラーは次のとおりです。

undefined method `confirmed?' for #<User:0x425f130>

Railsバージョン3.2.9とdeviseバージョン2.2.1を使用しています

私はレールとルビーを学んでいるので、誰かが私を助けてくれることを本当に願っています.

4

1 に答える 1

2

エラーメッセージは、confirmed?メソッドが定義されていないことに関するものです。追加したカスタムメソッドはconfirm

confirmed?メソッドはデバイスのモジュールによって追加されconfirmableます

上記のコメントで Jesse が述べたように、User クラスの「確認可能」モジュールを有効にします。

ユーザークラスの例:

class User < ActiveRecord::Base
  devise ..., :confirmable, ...

  ...

end
于 2013-01-13T12:23:29.683 に答える