rails heroku db:种子不通过

时间:2016-10-31 11:31:36

标签: ruby-on-rails heroku model

我最近销毁了我的Player模型,并生成了User模型,除了用户username:string, email:string, password:digest之外,其他字段几乎相同。

我还有一个Blog模型,该模型与User模型(以前使用Player模型)存在一对多的关系。

class User < ApplicationRecord
  has_many :blogs, dependent: :destroy
end

class Blog < ApplicationRecord
  belongs_to :user
end

问题是,在Heroku控制台上,Blog模型仍然具有之前的player_id字段。

Blog(id: integer, player_id: integer, content: text, created_at: datetime, updated_at: datetime)

我可以运行heroku run rails db:migrate,但是当我尝试运行heroku run rails db:seed时,它会给我这个错误。

ActiveModel::MissingAttributeError: can't write unknown attribute `user_id`

这是什么意思?

1 个答案:

答案 0 :(得分:1)

脚手架生成器不会为您重建旧的DB表,只需创建新的表。您需要创建一个重命名player_id列的迁移。

在控制台上运行此命令:

rails g migration RenamePlayerIdOnBlogs

然后在它生成的文件中添加以下代码:

class RenamePlayerIdOnBlogs < ActiveRecord::Migration
  def change
    rename_column :blogs, :player_id, :user_id
  end
end

然后运行rake db:migrate,你应该没事。