添加到模型的新字段 - 现在 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
的情况下缓存旧数据库状态。您需要重新启动您的应用程序,然后它应该可以运行。
我在我的汽车模型中添加了一个新字段 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
的情况下缓存旧数据库状态。您需要重新启动您的应用程序,然后它应该可以运行。