7

我对 Rails 非常陌生,完全被难住了。我真的也需要这个工作,因为它是另一个更大的主要是 Javascript 项目的一部分,而 Rails 部分刚刚被我抛弃了。我必须在 page_events 表中添加列(添加的列是 student_id、student_name 和survey_name),所以我进行了迁移,rake db:migrate,一切都很顺利。这是我的 schema.db 的相关部分

create_table "page_events", :force => true do |t|
    t.string   "page"
    t.integer  "num_focus",       :default => 0
    t.integer  "num_distracted",  :default => 0
    t.datetime "created_at",                     :null => false
    t.datetime "updated_at",                     :null => false
    t.integer  "time_focused",    :default => 0
    t.integer  "time_distracted", :default => 0
    t.integer  "total_time",      :default => 0
    t.string   "session_id"
    t.string   "student_id"
    t.string   "student_name"
    t.string   "survey_name"
end

但是,当我尝试将数据发布到 page_events 页面时,服务器响应 500 internal server error

ActiveRecord::UnknowAttributeError (unknown attribute: student_id):app/controllers/page_events_controller.rb:51 in 'new'

我尝试发布数据,除了没有 student_name、student_id 或survey_name,它工作正常。没有 500 错误,我发送的数据按预期显示在 page_events 索引上。我检查了一遍,找不到任何结论性的东西,我很紧张要打破它,因为正如我所说,我对 Rails 很陌生。我看到一些建议是重新生成模型等,但我不知道这是否会有所帮助。我可以在代码中找到具有显式表名和列的唯一位置是在 schema.db 中,如上所述,似乎是正确的。请帮忙...

我正在部署到 Heroku 应用程序,我不知道这是否会有所不同...

4

1 回答 1

16

完成迁移后,您需要执行 a heroku restart,因为应用程序在生产模式下运行,并且在迁移运行之前已经缓存了 db 模式。重新启动应用程序将重新缓存架构。但很有可能,自从您发布此内容以来,Heroku 已经重新启动了您的应用程序,并且问题现在已经消失。

于 2013-09-25T07:45:21.517 回答