我的设计设置发生了一些非常奇怪的事情。
我有一个自定义的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?
答案 0 :(得分:0)
resource
未在任何地方设置。在default ConfirmationsController
中,Devise会像这样初始化resource
(取决于您正在运行的版本):
self.resource = resource_class.send_confirmation_instructions(resource_params)
如果您在super
语句之前添加puts
,则应设置resource
。