0

RORの非常に単純なアプリケーションでテストを実行しようとするとエラーが発生します。私はオンラインコースを取っていると私は、この非常に単純な2つのテーブルを持つデータベースがあります。ForeignKeyのと(titlebody付き)postscomments(:。post_idbodyを私はrake testを実行すると、私は次のエラーを取得する:Ruby on Railsでrake testを実行するとエラーが発生する

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` 

任意の助けいただければ幸い。あなたはその主キー他のテーブルで参照される表の行を削除したときに感謝。

+0

https://stackoverflow.com/questions/15443913/sqlite3-foreign-key-constraint-failed –

答えて

0

このエラーが発生した。あなたは、あなたの外部キー定義にON DELETE CASCADEを含めることができます(あなたはどこのプライマリ定義する場所キーは別のテーブルによって参照される)、別のテーブルdelete文を使用して、現在実行しているdelete文を実行する前に、主キーを参照する行を削除します。

0

は、あなたのPostモデルにこれを追加します。

has_many :comments, dependent: :destroy 

あなたPostモデルを破壊するとき、これは関連するコメントを破壊します。だから、ConstraintExceptionを取得しません。

Rails関連の詳細については、hereを参照してください。

関連する問題