ruby-on-rails - 向表 Rails 3 添加列后出现未知属性错误

标签 ruby-on-rails ruby heroku migrate

我对 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 内部服务器错误

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 应用程序,我不知道这是否有影响......

最佳答案

完成迁移后,您需要执行 heroku restart,因为应用程序正在生产模式下运行,并且会在运行迁移之前缓存数据库模式。重新启动应用程序将重新缓存架构。不过,自从您发布此消息后,您的应用程序可能已经被 Heroku 重新启动,并且问题现在已经消失。

关于ruby-on-rails - 向表 Rails 3 添加列后出现未知属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994278/

相关文章:

django - 在 Heroku Server django 上安装 poppler

ruby-on-rails - Rails测试默认请求主机

ruby-on-rails - 使用 rspec3 测试 has_many 和 shoulda-matchers

ruby-on-rails - 我可以向 Rails Mocha 中的 stub 添加自定义副作用吗?

ruby-on-rails - 在 Heroku 上降级到免费 dyno 后出现 SSL 错误

ruby-on-rails - Elasticsearch 无法以索引开头且别名需要唯一错误

ruby-on-rails - 将默认值添加到 *_path 方法生成的路由的前缀中

sql - Rails Activerecord 查询选择性包含

ruby-on-rails - Memcached 大小限制对于文件系统实体存储究竟代表什么?

android - 在 Android 设备上保存解析安装记录时获得授权