0

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

我有一个自定义的 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

我的路线.rb

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

当我根据我的路由文件点击这个控制器时,我输入了一封电子邮件。单击提交并获取资源的空指针。但不是资源名称。有没有人知道我可能会错过什么,或者为什么客户会以空值的身份出现?

4

1 回答 1

0

resource没有在任何地方设置。默认情况下ConfirmationsController,Deviseresource会像这样初始化(取决于您正在运行的版本):

self.resource = resource_class.send_confirmation_instructions(resource_params)

如果你把你的语句放在super 前面,应该设置。putsresource

于 2012-11-16T18:24:26.380 回答