heroku运行rails db:migrate

时间:2017-06-12 14:23:57

标签: heroku ruby-on-rails-5

执行heroku run rails db:migrate后,我在堆栈跟踪中遇到了这个错误:

  

ActiveRecord :: StatementInvalid:PG :: UndefinedTable:ERROR:relation   “类别”不存在:       CREATE TABLE“products”(“id”序列主键,“title”字符变化,“description”字符变化,“category_id”   整数,“图片”字符变化,“视频”字符变化,   “created_at”       timestamp NOT NULL,“updated_at”timestamp NOT NULL,CONSTRAINT“fk_rails_fb915499a4”

     

FOREIGN KEY(“category_id”)REFERENCES“categories”(“id”))

然后我跑了heroku run:detached rake db:migrate并且有效。

但是当我去网站的网址时,我收到了这个错误:

  

WelcomeRetroller中的ActiveRecord :: StatementInvalid #index

     

PG :: UndefinedTable:错误:关系“产品”不存在第1行:选择“产品”。* FROM“产品”订购“产品”。“cr ... ^:SELECT”products“。* FROM “products”ORDER BY“products”。“created_at”ASC LIMIT $ 1

编辑:

class WelcomeController < ApplicationController
  def index
  end
end

此错误也指向此行:

@all_products = Product.order(created_at: :asc).last(4)

application_controller.rb中定义如下:

 def getProducts
  @all_products = Product.order(created_at: :asc).last(4)
 end

@all_products中使用了welcome/index.html.erb变量来显示最近上传的4个产品。

它被称为:

<div class="text-center">
 <% if @all_products.present? %>
  <% @all_products.each do |p| %>
    <a href="<%= p.picture() %>" data-toggle="lightbox" data-gallery="example-gallery" data-title="<%= p.title %>">
        <%= image_tag(p.picture.url, size: '200x200', class: 'rounded') %>
    </a>&nbsp;&nbsp;    
  <% end %>
 <% end %>
</div>

1 个答案:

答案 0 :(得分:0)

rake db:migrate在一次性流程中运行,您的Web进程已经启动并缓存了原始数据库架构,您需要在运行迁移后重新启动应用程序以重新缓存新架构。