Rails + Heroku:外键约束失败

时间:2016-08-29 07:06:34

标签: mysql ruby-on-rails heroku

我正在尝试在我的Heroku服务器上为我的Rails项目播放我的MySQL数据库,我收到此错误:

  

ActiveRecord :: InvalidForeignKey:Mysql2 ::错误:无法添加或更新子行:外键约束失败(heroku_b08bb4ad8dfb726posts,CONSTRAINT fk_rails_5b5ddfd518 FOREIGN KEY({{ 1}})参考user_idusers)):插入idpostsidtitledescriptionuser_idcategory_idcreated_at)价值观(1,'标题',' Desc',1,1,' 2016 -08-29 06:53:04',' 2016-08-29 06:53:04')

令人惊讶的是,我的开发环境中没有出现此错误。

种子文件的摘录如下所示:

updated_at

发布模型:

# Creating Users here

Category.create!([
  { id: 1, name: "Category"},
])

Post.create!([
 { id: 1, title: "Title", description: "Desc", user_id: "1", category_id: "1" },
])

类别模型:

class Post < ApplicationRecord
  belongs_to :user
  belongs_to :category
  has_many :comments
  validates :title, :description, presence: true
end

如果您在评论中需要更多代码段,请与我们联系。非常感谢您对此问题的任何想法。

1 个答案:

答案 0 :(得分:1)

您还需要在 seed.rb

中创建用户

约束失败,因为您的数据库中user没有id = 1

在种子文件中添加

user = User.create(
  # user attributes like `name`
)

Post.create!([
 { id: 1, title: "Title", description: "Desc", user_id: user.id, category_id: "1" },
])

另外,我建议您使用user_idfirst或随机记录来避免约束失败,而不是硬编码last等值。