我有一個現有的數據庫結構創建外部或Rails。我已經編輯了一個db/migrate文件,以包含所有適當的列(不確定這是否是正確的方式),但在應用程序中或甚至在交互式控制檯中,Rails正在對查詢表,特別是缺少ID列。Rails誤讀表結構,如何讓它知道當前strcuture
SELECT `dvds`.* FROM `dvds` WHERE (`dvds`.`` >= 0) ORDER BY `dvds`.`` ASC LIMIT 1000
我也運行了rake db:在編輯具有正確列名和類型的遷移文件後創建。
如何告訴Rails當前的結構是什麼?
這發生在我之前,我想我必須最終刪除所有的遷移文件並從頭開始生成一些文件。我真的不記得我做了什麼來修復它(應該寫下來),但我確定有一個我可以編輯的文件讓Rails知道結構不是?
表模式:
`id` int(11) unsigned NOT NULL,
`title` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
`studio` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`released` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`status` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`sound` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`versions` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`price` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
`rating` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`year` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
`genre` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`aspect` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`upc` varchar(155) CHARACTER SET utf8 DEFAULT NULL,
`dvd_realease` timestamp NULL DEFAULT NULL,
`timestamp` timestamp NULL DEFAULT NULL,
`directors` varchar(342) CHARACTER SET utf8 DEFAULT NULL,
`actors` varchar(342) CHARACTER SET utf8 DEFAULT NULL
遷移文件:
class CreateDvds < ActiveRecord::Migration
def change
create_table :dvds do |t|
t.integer :id
t.string :title
t.string :studio
t.string :released
t.string :status
t.string :sound
t.string :versions
t.string :price
t.string :rating
t.string :year
t.string :genre
t.string :aspect
t.string :upc
t.timestamp :dvd_release
t.timestamps
t.string :directors
t.string :actors
end
end
end
對不起,是'軌腳本/生成模型dvds'或'軌生成模式DVD '(我已經完成了,但是它表示模型已經存在並且只是空的,如果我刪除模型,它會給我這個錯誤:另一個遷移已經命名爲create_dvds:/.../db/migrate/20111116170531_create_dvds。 rb) – kakubei
我發佈的導軌生成器將爲您的模型生成一個腳手架。因此,例如,您可以調用您的模型Dvd,這將生成遷移以創建名爲dvd的表格。 您可以發佈DVD表架構和DVD類和遷移文件嗎? – charliequinn
是的,當我運行'rails生成模型Dvd'時,請參閱上面的內容以瞭解發生了什麼。 – kakubei