我在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