在开发中保存数据库属性但不在生产中保存

时间:2016-02-01 05:17:36

标签: ruby-on-rails ruby-on-rails-4 heroku devise devise-invitable

我在生产中遇到数据库错误。但在开发过程中没有错误。

ActiveModel::MissingAttributeError (can't write unknown attribute `invited_by_id`):

invite_by_id是由Devise Invitable gem添加到我的User表的列。在我的Devise Invitable实现首次投入生产然后尝试邀请新用户后,我遇到了此错误。

我已确认invite_by_id存在于我的开发表和生产表中。我已经通过Rails控制台多次检查了每个环境。我还做了rake db:两次迁移以获得良好的测量(在生产中),第一次添加Devise Invitable列,第二次,当然,由于已经添加了列,因此没有新的迁移。 Devise Invitable还添加了许多其他列,这些列已成功迁移到同一个用户表,并且未创建错误。我也成功编辑了一个。 (谷歌搜索,设计可邀请的Github问题,以及对我的开发和生产环境领域的彻底审查除了鼓励检查列是否存在之外什么都没有产生 - 它是。)

对于像这样的情况,是否需要了解Devise Invitable,用户表或开发与生产数据库?对于其他一些上下文,我使用Devise Invitable 1.5.5,Rails 4.2.4,我的生产数据库在Heroku上。

谢谢!

1 个答案:

答案 0 :(得分:1)

ActiveModel::MissingAttributeError (can't write unknown attribute `invited_by_id`)

查看此错误消息,您在生产数据库中缺少invited_by_id列。确保在生产环境中运行迁移,然后重试。这应该可以解决你的问题。

Here is the same issue在gem的github页面上报道。

您还可以尝试重新启动您的heroku应用程序,这似乎可以多次解决此类问题:)