在 Heroku 上部署用 Ruby On Rails 编写的 Web 应用程序(在线商店(后,数据库中的产品不会显示。我使用"git push heroku master"和"heroku run rails db:migrate"部署并迁移了数据库。我正在使用PostgreSQL和Paperclip gem进行图像上传。
我尝试从已部署的应用程序上传新产品,它可以工作。
<% @products.each do |product| %>
<div class="col-lg-4 col-md-6 mb-4">
<div class="cart h-100">
<% if product.image.present? %>
<%= link_to image_tag(product.image.url(:thumb)), product_path(product)%>
<% end %>
<div class="card-body">
<h4 class="card-title"><%= product.name %></h4>
<h5><%= product.price %></h5>
<p class="card-text"><%= product.description %></p>
</div>
<div class="card-footer">
<% if current_user && current_user.admin? %>
<%= link_to 'Edit', edit_product_path(product) %>
<%= link_to 'Delete', product_path(product), method: :delete, data: { confirm: 'Are you sure?' } %>
<% elsif current_user && !current_user.admin %>
<%= form_tag(line_items_path(product_id: product.id)) do %>
<%= number_field_tag(:quantity, 1) %>
<%= submit_tag('Add to shopping cart') %>
<% end %>
<% elsif !user_signed_in? %>
<% end %>
</div>
</div>
</div>
<% end %>
我希望显示数据库中的项目,但是迁移后,产品仍然丢失,我只能从部署的应用程序添加它们。
默认情况下,您的数据库在各种 Rails 环境之间是完全独立的:您在本地机器上所做的任何事情都只存在于您的本地机器上,而不是在 Heroku 上(反之亦然(。(毕竟,您不希望您的测试产品出现在您的实时商店中。
如果您有始终需要存在的特定数据库记录 - 无论您是在本地开发计算机上,还是在测试环境中,还是在Heroku的生产环境中 - 这就是Active Record"种子"功能存在的原因。