我有一个现有的数据库结构创建外部或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