我在Ruby on Rails应用程序安装色器件宝石进行身份验证,我跑了数据库迁移这样的:错误运行Ruby on Rails的数据库迁移
rake db:migrate
,并得到这个错误:
undefined method `reference' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x9322248>
这有点神秘。我应该在哪里进行调试,问题是什么?
我做的唯一非标准件事是给它的表名“用户”,这是在此之前的命令我的表名:轨生成设计用户
而且,我的routes.rb文件有这个新条目:
devise_for :users
可能是问题是我的数据库中的不匹配的列以及认证包认为用户表应该是什么样的问题。我在哪里看看auth软件包认为这些列是什么样的?我在哪里可以找到create-table命令用于我拥有的用户表的位置。它最初是用脚手架命令制作的,它在我的系统中放置了大量额外和无用的东西。
我的DB /迁移/用户/ create_users文件看起来像这样:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.timestamps
end
end
def self.down
drop_table :users
end
end
这是基本的,但我的用户在db表中有这些列:
+------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+-------+
| uid | int(10) unsigned | NO | PRI | 0 | |
| name | varchar(60) | NO | UNI | | |
| pass | varchar(128) | NO | | | |
| mail | varchar(254) | YES | MUL | | |
| theme | varchar(255) | NO | | | |
| signature | varchar(255) | NO | | | |
| signature_format | varchar(255) | YES | | NULL | |
| created | int(11) | NO | MUL | 0 | |
| access | int(11) | NO | MUL | 0 | |
| login | int(11) | NO | | 0 | |
| status | tinyint(4) | NO | | 0 | |
| timezone | varchar(32) | YES | | NULL | |
| language | varchar(12) | NO | | | |
| picture | int(11) | NO | | 0 | |
| init | varchar(254) | YES | | | |
| data | longblob | YES | | NULL | |
+------------------+------------------+------+-----+---------+-------+
而且我不确定在运行migrate命令后如何存在这种不一致性。如果不是我发布的上述文件,它从哪里接受指示?
谢谢!
您可以粘贴未迁移的迁移文件(或文件)的内容吗? – twmills 2011-05-13 18:18:05
@twmills实际上,这是问题的一部分 - 我不完全确定如何得到这些文件大声笑......他们通常会在哪里找到? – GeekedOut 2011-05-13 18:22:30
您之前是否运行过迁移? – eveevans 2011-05-13 18:42:26