Ruby on rails 在RubyonRails中运行rake测试时出错

Ruby on rails 在RubyonRails中运行rake测试时出错,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,当我尝试在ROR中对我非常简单的应用程序运行测试时,我遇到了一个错误。我正在网上学习一门课程,我有一个非常简单的数据库,它有两个表:posts(带标题和正文)和评论(带外键:post\u id和正文。当我运行rake测试时,我得到以下错误: Error: PostsControllerTest#test_should_destroy_post: ActiveRecord::InvalidForeignKey: SQLite3::ConstraintException: FOREIGN KEY

当我尝试在ROR中对我非常简单的应用程序运行测试时,我遇到了一个错误。我正在网上学习一门课程,我有一个非常简单的数据库,它有两个表:
posts
(带
标题和
正文
)和
评论
(带外键:
post\u id
正文
。当我运行
rake测试时,我得到以下错误:

Error: PostsControllerTest#test_should_destroy_post:
ActiveRecord::InvalidForeignKey: SQLite3::ConstraintException: FOREIGN
 KEY constraint failed: DELETE FROM "posts" WHERE "posts"."id" = ?
     app/controllers/posts_controller.rb:57:in `destroy'
     test/controllers/posts_controller_test.rb:43:in `block (2 levels) in <class:PostsControllerTest>'
     test/controllers/posts_controller_test.rb:42:in `block in <class:PostsControllerTest>'


bin/rails test test/controllers/posts_controller_test.rb:41

....

Finished in 12.539965s, 1.1164 runs/s, 1.2759 assertions/s. 14 runs,
16 assertions, 0 failures, 1 errors, 0 skips`
错误:PostsControllerTest#test(测试)应(销毁)post:
ActiveRecord::InvalidForeignKey:SQLite3::ConstraintException:外部
密钥约束失败:从“posts”中删除,其中“posts”。“id”=?
app/controllers/posts_controller.rb:57:in'destroy'
test/controllers/posts\u controller\u test.rb:43:in‘block(2级)in’
test/controllers/posts\u controller\u test.rb:42:in'block in'
bin/rails测试/控制器/posts\u控制器\u测试。rb:41
....
以12.539965秒、1.1164次运行/秒、1.2759次断言/秒、14次运行完成,
16次断言,0次失败,1次错误,0次跳过`

任何帮助都将不胜感激。谢谢。

删除表中主键在另一个表中引用的行时,会发生此错误。您可以在外键定义(定义另一个表引用主键的位置)中包含“删除级联”
,或在执行当前执行的delete语句之前,添加另一个delete语句以删除引用主键的行。

删除表中主键在另一个表中引用的行时,会发生此错误。您可以在外键定义中包含关于delete CASCADE的
(定义另一个表引用主键的位置),或在执行当前执行的delete语句之前,添加另一个delete语句以删除引用主键的行。

将此添加到您的
Post
模型:

has_many :comments, dependent: :destroy
当您销毁
Post
模型时,这将销毁相关注释。因此您将不会获得
ConstraintException


您可以找到有关Rails关联的更多信息。

将此添加到您的
Post
模型中:

has_many :comments, dependent: :destroy
当您销毁
Post
模型时,这将销毁相关注释。因此您将不会获得
ConstraintException

您可以找到有关Rails关联的更多信息