Ruby on rails Heroku服务器上的数据库中似乎不存在类别和子类别

Ruby on rails Heroku服务器上的数据库中似乎不存在类别和子类别,ruby-on-rails,heroku,Ruby On Rails,Heroku,我已经将Rails应用程序部署到Heroku,但是类别和子类别已经不存在了 我有显示在主页上的类别和子类别,但部署后,类别和子类别不会显示。当我在本地运行应用程序时,将显示类别和子类别 之前,当我尝试将我的应用程序部署到Heroku时,我收到了与类别和子类别相关的错误。为了解决我以前的错误,我将类别和子类别放在if语句中: <% if Category.exists?(id) %> <% end %> 对我来说,问题似乎是这些类别存在于本地服务器上的数据库中,而不存

我已经将Rails应用程序部署到Heroku,但是类别和子类别已经不存在了

我有显示在主页上的类别和子类别,但部署后,类别和子类别不会显示。当我在本地运行应用程序时,将显示类别和子类别

之前,当我尝试将我的应用程序部署到Heroku时,我收到了与类别和子类别相关的错误。为了解决我以前的错误,我将类别和子类别放在if语句中:

<% if Category.exists?(id) %>
<% end %>

对我来说,问题似乎是这些类别存在于本地服务器上的数据库中,而不存在于Heroku服务器上

对我来说,问题似乎是这些类别存在于本地服务器上的数据库中,而不存在于Heroku服务器上

这就是它的工作原理

您的本地数据库和Heroku数据库是完全独立的。您需要单独迁移它们(例如,
railsdb:migrate
heroku-runrailsdb:migrate
),并且需要单独填充它们。你的数据不会神奇地复制到Heroku

如果您想将所有本地数据复制到Heroku数据库,可以使用类似的方法,但这需要PostgreSQL备份。看起来您正在本地使用SQLite

另一个选择是

但这不应该是你一直在做的事情。在多个位置更新数据时,很容易遇到数据问题(例如重复ID)。接受数据库是分开的。应用程序的每个副本都有不同的数据。这其实是件好事

作为一般规则,我强烈建议您在本地使用与生产中相同的数据库服务器。PostgreSQL和SQLite并不是替代品。您不希望在将代码部署到生产环境时发现问题

对我来说,问题似乎是这些类别存在于本地服务器上的数据库中,而不存在于Heroku服务器上

这就是它的工作原理

您的本地数据库和Heroku数据库是完全独立的。您需要单独迁移它们(例如,
railsdb:migrate
heroku-runrailsdb:migrate
),并且需要单独填充它们。你的数据不会神奇地复制到Heroku

如果您想将所有本地数据复制到Heroku数据库,可以使用类似的方法,但这需要PostgreSQL备份。看起来您正在本地使用SQLite

另一个选择是

但这不应该是你一直在做的事情。在多个位置更新数据时,很容易遇到数据问题(例如重复ID)。接受数据库是分开的。应用程序的每个副本都有不同的数据。这其实是件好事


作为一般规则,我强烈建议您在本地使用与生产中相同的数据库服务器。PostgreSQL和SQLite并不是替代品。您不希望在将代码部署到生产环境时发现问题。

在此处提问时,请注意仅共享相关代码。你问题中的大部分代码都是完全不相关的。看见我们想要一个,重点放在最小。克里斯回答了你的问题,但我也会给你一些建议。在categories控制器中,您并没有对查询排序,同时您正在按索引提取记录。将
.order(:id)
添加到
类别。全部
。现在,您所依赖的事实是,数据库正在按照您期望的顺序返回记录,但您并没有要求以任何特定的方式对它们进行排序。这是一场赌博,不能保证无序查询将继续按预期的顺序返回结果(尤其是在磁盘上插入和删除记录时,甚至在其他表中)。欢迎来到Stackoverflow,我稍微澄清了一下您的问题,因为@Chris提到的大多数问题其实都不是必要的。祝你好运。当你在这里提问时,请注意只分享相关代码。你问题中的大部分代码都是完全不相关的。看见我们想要一个,重点放在最小。克里斯回答了你的问题,但我也会给你一些建议。在categories控制器中,您并没有对查询排序,同时您正在按索引提取记录。将
.order(:id)
添加到
类别。全部
。现在,您所依赖的事实是,数据库正在按照您期望的顺序返回记录,但您并没有要求以任何特定的方式对它们进行排序。这是一场赌博,不能保证无序查询将继续按预期的顺序返回结果(尤其是在磁盘上插入和删除记录时,甚至在其他表中)。欢迎来到Stackoverflow,我稍微澄清了一下您的问题,因为@Chris提到的大多数问题其实都不是必要的。祝你好运,老兄,在所有环境中使用同一个数据库服务器的观点是正确的。尽管ActiveRecord试图实现通用性,但数据库之间仍然存在细微的差异。我希望更多的人知道这一点。非常感谢你的回答,我通过运行heroku run rails db:seed解决了我的问题。伙计,关于在所有环境中使用相同数据库服务器的观点是正确的。尽管ActiveRecord试图实现通用性,但数据库之间仍然存在细微的差异。我希望更多的人知道这一点。非常感谢你的回答,我通过运行heroku run rails db:seed解决了我的问题。