添加到模型的新字段 - 现在 active_admin 在本地工作,但不在生产中 (Heroku)

New field added to model - Now active_admin working locally, but not in production (Heroku)

我在我的汽车模型中添加了一个新字段 car_color,我在本地登录 active_admin,我在我的汽车页面上看到了新的列,我可以添加汽车的颜色编辑记录,我可以在创建新记录时设置颜色。此外,我能够使用 active_admin_import 导入带有 header car_color 的 CSV。这一切都按预期工作。

我更新了我的控制器以允许 car_color,我也更新了 admin/car.rb 以允许 car_color

我将更改推送到 Heroku 并使用 heroku run rake db:migrate 迁移了数据库,这看起来很有效。

Running `rake db:migrate` attached to terminal... up, run.7812
Migrating to AddCarColorToCar (20150915191640)
== 20150915191640 AddCarColorToCar: migrating =================================
-- add_column(:cars, :car_color, :string)
   -> 0.0016s
== 20150915191640 AddCarColorToCar: migrated (0.0017s) ========================

但是,当我尝试在生产环境中使用 active_admin 执行任何操作时,就好像 car_color 字段不存在一样。 table 中没有 car_color 列,当我尝试创建新车或编辑现有汽车并尝试使用 header car_color 抛出此错误:

undefined method `car_color=' for #<Car:0x007fcaa5e51ad8>

此外,当我执行 heroku run console 时,我可以毫无问题地在汽车上查看和设置 car_color,所以问题似乎出在 active_admin,与迁移无关。此外,运行 heroku pg:psql 并查看 cars table 显示新的 car_color 字段。

知道为什么这在开发中可以完美运行但在生产中却不行吗?

如果您或其他人在迁移数据库之前通过 http://your-app.heroku.com 的请求启动应用程序,就会发生这种情况。发生的事情是应用程序在没有 car_color 的情况下缓存旧数据库状态。您需要重新启动您的应用程序,然后它应该可以运行。