Rails 3 +迁移中的设计错误:未定义的方法可超出

时间:2011-06-24 16:02:56

标签: ruby-on-rails devise

我在我的应用中使用rails 3和Devise 1.3.4进行身份验证。 生成用户模型后,我尝试将更多设计模块添加到我的devise_create_users.rb迁移文件中,但是我收到错误:
对于ActiveRecord :: ConnectionAdapters :: TableDefinition,未定义的方法`timeoutable'。

但是,添加其他模块如:确认工作就好了。

devise_create_user.rb:

create_table(:users) do |t|
  t.database_authenticatable :null => false
  t.recoverable
  t.rememberable
  t.trackable
  t.timeoutable
  # t.encryptable
  t.confirmable
  # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
  # t.token_authenticatable


  t.timestamps
end

我的用户模型:

class User < ActiveRecord::Base

# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable , :timeoutable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end

任何想法错误可能是什么?

3 个答案:

答案 0 :(得分:2)

答案是你实际上并不需要任何针对超时的迁移,它只是用户/资源类的声明。看到 How do I add Devise's 'timeoutable' module to an existing Devise install? - Rails 3.1

答案 1 :(得分:1)

执行'rails g devise:install'而不是'rails g devise install'然后迁移db然后它应该工作

答案 2 :(得分:0)

首次运行后是否编辑了迁移文件? 你能否确保users表包含devise_create_user.rb中指定的所有列