设计中的空指针错误

时间:2012-11-16 17:31:28

标签: ruby-on-rails ruby devise confirmation devise-confirmable

我的设计设置发生了一些非常奇怪的事情。

我有一个自定义的ConfirmationsController,我用它来设计自定义行为。

我的客户模式:

class Customer
include Mongoid::Document

after_create      :prepare_demo_app

devise :validatable,
       :registerable,
       :database_authenticatable,
       :confirmable,
       :trackable,
       :rememberable,
       :recoverable,
       :mailchimp

## Confirmable
field :confirmation_token,   :type => String
field :confirmed_at,         :type => Time
field :confirmation_sent_at, :type => Time

我的自定义控制器

 class ConfirmationsController < Devise::ConfirmationsController
    def create
        puts "resource #{resource}"
        puts "resource name #{resource_name}"
        super
    end
enter code here

我的routes.rb

 devise_for :customers,
               :controllers => {:confirmations => "confirmations" },
               :skip => [:sessions, :passwords], :format => false do
               #... other gets and posts but nothing to do with confirmations 
               #...
    end

当我根据路线文件点击此控制器时,我输入一封电子邮件。单击“提交”并获取资源的空指针。但不是资源名称。有没有人有任何想法,我可能会缺少什么或客户为什么会通过null?

1 个答案:

答案 0 :(得分:0)

resource未在任何地方设置。在default ConfirmationsController中,Devise会像这样初始化resource(取决于您正在运行的版本):

self.resource = resource_class.send_confirmation_instructions(resource_params)

如果您在super语句之前添加puts ,则应设置resource