【问题标题】:New field added to model - Now active_admin working locally, but not in production (Heroku)新字段添加到模型 - 现在 active_admin 在本地工作,但不在生产中(Heroku)
【发布时间】:2015-09-15 20:33:43
【问题描述】:

我在我的汽车模型中添加了一个新字段car_color,我在本地登录到active_admin,我在我的汽车页面上看到了新列,我可以在编辑记录时添加汽车的颜色,然后我创建新颜色时可以设置颜色。此外,我能够使用active_admin_import 导入带有标题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 字段不存在一样。表中没有car_color 列,当我尝试创建新车或编辑现有汽车并尝试导入带有标题car_color 的CSV 时会出现此错误:

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

另外,当我执行heroku run console 时,我可以毫无问题地在汽车上查看和设置car_color,因此问题似乎出在active_admin,而不是迁移。此外,运行heroku pg:psql 并查看cars 表会在其中显示新的car_color 字段。

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

【问题讨论】:

  • 在迁移后始终运行 heroku restart -a app_name。
  • @AndreyDeineko,谢谢,这会影响当时使用该应用程序的任何人吗?
  • 理论上不应该:)

标签: ruby-on-rails ruby heroku activeadmin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2014-04-27
    • 2016-11-05
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多