我最近销毁了我的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`
这是什么意思?
答案 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
,你应该没事。