== AddAncestryToMessages: migrating ==========================================
-- add_column(:messages, :ancestry, :string)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: no such table: messages: ALTER TABLE "messages" ADD "ancestry" varchar(255)
所以我的应用程序有你可以发布的消息(有点像Twitter)和我添加回复,我正在使用祖先宝石来做到这一点。
我的代码在我的schema.rb
文件中(我认为这是每次运行 rake db:migrate 时用于创建表的文件。 但我可能是错的(这可能是问题所在!
create_table "messages", :force => true do |t|
t.string "content"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "ancestry"
end
add_index "messages", ["user_id", "created_at", "ancestry"], :name => "index_messages_on_user_id_and_created_at_and_ancestry"
哦,现在我明白了:您将代码添加到schema.rb
但必须使用迁移。从schema.rb
中删除手动添加的代码并运行:
rails g migration CreateMessages
您将获得文件 db/migrate/[timestamp]_create_messages.rb。用您的代码填充其 change
方法,然后运行(它应该为您创建,但为空。对于旧版本,它被命名为 up
):
rake db:migrate
此命令将自行更改您的schema.rb
。不要手动更改它!(至少直到你成为一个成熟的Rails程序员)。