我为我的应用程序创建了一个新的Projects模型,一切都在开发中正常工作但在Heroku上生产我收到500错误。错误来自我的ProjectsController#创建错误状态:
2014-05-16T07:00:48.018827+00:00 app[web.1]:
2014-05-16T07:00:48.018832+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG:
:UndefinedColumn: ERROR: column "taggings_count" does not exist
2014-05-16T07:00:48.018834+00:00 app[web.1]: LINE 1: UPDATE "tags" SET "taggings
_count" = COALESCE("taggings_coun...
2014-05-16T07:00:48.018835+00:00 app[web.1]:
这几乎与我在搜索后发现的问题完全相同:https://github.com/KatanaCode/blogit/issues/57。这个人说他们通过从acts_as_taggable https://github.com/mbleigh/acts-as-taggable-on/tree/master/db/migrate
中提取这些新的迁移来解决这个问题我很确定我遇到了同样的问题,但我是铁杆的新手,并且不确定他是什么意思,他拉动了这些迁移。我只是更新我的acts_as_taggable gem并推送到heroku吗?有人能指出我正确的方向吗?提前谢谢。
答案 0 :(得分:2)
既然你是新手(欢迎顺便!!!),这就是你的错误:
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "taggings_count" does not exist
这是标准错误,基本上意味着您的数据库中没有该列
您的acts_as_taggable
正在 production 数据库中查找taggings_count
列,但它不存在。一个简单的解决方法是在生产环境(Heroku)中使用rake db:migrate
方法:
$ heroku run rake db:migrate RAILS_ENV=production
这将在你的heroku实例上运行migrate方法,应为你填充数据库。这不包括acts-as-taggable
可能存在的任何错误/错误
错误强>
关于错误的具体细节,您提供的链接基本上说最新版本的acts-as-taggable
引入了多项迁移,您的应用不会包含这些迁移
修复建议的方法是按照定义here获取迁移文件,并将它们放入db/migrate
目录中 - 允许您正确填充数据库
如果您需要帮助(尝试rake db:migrate
后),请注释&我会给你更多信息
答案 1 :(得分:0)
这个问题似乎只发生在调用模型属性'标记'时,它会导致某种冲突,但仅限于生产中。删除列并创建一个名称不同的新列。
答案 2 :(得分:0)
您可以再次回滚和迁移:
heroku run rake db:rollback STEP=5
heroku run rake db:migrate
STEP = 5,因为acts_as_taggable创建了5次迁移