如何解决:“在Heroku上部署后,缺少数据库中的项目”

问题描述 投票:0回答:1

在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 %>       

我希望从数据库中显示项目,但是在迁移之后,产品仍然缺失,我只能从已部署的应用程序中添加它们。

ruby-on-rails database heroku deployment ruby-on-rails-5
1个回答
0
投票

默认情况下,您的数据库在各种Rails环境之间是完全独立的:您在本地计算机上执行的任何操作都仅存在于本地计算机上,而不存在于Heroku上(反之亦然)。 (毕竟,您不希望您的测试产品出现在您的实时商店中。)

如果您始终需要存在特定的数据库记录-无论是在本地开发机器上,在测试环境中还是在Heroku上的生产环境中-这就是Active Record "seed" feature存在的原因。

© www.soinside.com 2019 - 2024. All rights reserved.