我在我的应用中使用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
任何想法错误可能是什么?
答案 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中指定的所有列