设计ensure_authentication_token报告未定义的方法

Man*_*Das 8 authentication ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.1

用户模型看起来像这样:

before_save :ensure_authentication_token

devise :database_authenticatable, :registerable,
  :recoverable, :rememberable, :trackable, :validatable
  :token_authenticatable

attr_accessible :email, :password, :password_confirmation, 
                :remember_me, :first_name, :last_name, 
                :cell_phone, :city, :state, :country, :user_type
Run Code Online (Sandbox Code Playgroud)

在devise.rb文件中我没有注释:

config.token_authentication_key = :auth_token
Run Code Online (Sandbox Code Playgroud)

我的用户迁移如下:

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
   create_table(:users) do |t|
    t.database_authenticatable :null => false
    t.recoverable
    t.rememberable
    t.trackable
    t.token_authenticatable
    t.timestamps
   end

   add_index :users, :email,                :unique => true
   add_index :users, :reset_password_token, :unique => true
   add_index :users, :authentication_token, :unique => true
  end

  def self.down
   drop_table :users
  end
end
Run Code Online (Sandbox Code Playgroud)

在创建用户时,会出现以下参数

{"utf8"=>"?",
 "authenticity_token"=>"+F8cjCoauVKhZPSJLhW+AAhui1DygBcODsYn4Va/ktY=",
 "user"=>{"first_name"=>"any_name",
 "last_name"=>"any_name",
 "email"=>"any_email@gmail.com",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]",
 "cell_phone"=>"any_number",
 "city"=>"some_city",
 "state"=>"some_state",
 "country"=>"U.S.A",
 "user_type"=>"student"},
 "commit"=>"Sign up"}
Run Code Online (Sandbox Code Playgroud)

但是在创建用户时仍然会出现以下错误:

NameError in Devise::RegistrationsController#create

   undefined local variable or method `ensure_authentication_token' for #<User:0x007fd4448f7350>
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

PS在我的Gemfile中,Devise gem的配置如下:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git', :branch => 'master'
Run Code Online (Sandbox Code Playgroud)

Man*_*Das 10

对不起,这是我的坏,我错过了一个逗号:)

devise :database_authenticatable, :registerable,
  :recoverable, :rememberable, :trackable, :validatable, #here
  :token_authenticatable
Run Code Online (Sandbox Code Playgroud)

它现在正在工作.