【问题标题】:Unknown Attribute Error after Adding Columns to table Rails 3将列添加到表 Rails 3 后出现未知属性错误
【发布时间】:2026-01-13 03:05:01
【问题描述】:

我对 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 应用程序,我不知道这是否会有所不同...

【问题讨论】:

  • 页面事件模型中有attribute_accessible :student_id吗?
  • 当您将字段 student_id 发布到您的 rails 应用程序时,您是将其发布为整数还是字符串?
  • 感谢您的回复,它肯定是以字符串形式发布的,不,我会尝试 attribute_accessible :student_id 并告诉您进展如何
  • 愚蠢的问题,但是:您是否已将迁移提交到您的存储库?你推了吗? :)

标签: ruby-on-rails ruby heroku migrate


【解决方案1】:

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

【讨论】:

  • 是的,就是这样!在本地进行迁移后,我还必须运行 heroku run rake db:migrate。昨晚深夜想通了。谢谢!
  • heroku restart --> 只需要使用它。天才!
最近更新 更多