Rails acts_as_taggable heroku 500错误

时间:2014-05-16 22:41:32

标签: ruby-on-rails heroku controller acts-as-taggable-on

我为我的应用程序创建了一个新的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吗?有人能指出我正确的方向吗?提前谢谢。

3 个答案:

答案 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次迁移