0

Je reçois une erreur lorsque j'essaie d'exécuter un test sur mon application très simple dans ROR. Je prends un cours en ligne et j'ai cette base de données très simple qui a deux tables: posts (avec title et body) et comments (avec ForeignKey. post_id et body Quand je lance rake test je reçois l'erreur suivante:Erreur lors de l'exécution du test de rake dans Ruby on Rails

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` 

Toute aide serait appréciée. Merci.

+0

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

Répondre

0

Cette erreur se produit lorsque vous supprimez une ligne dans une table dont la clé primaire est référencée dans une autre table. vous pouvez inclure ON DELETE CASCADE dans votre définition de clé étrangère (où vous définissez où le primaire la clé est référencée par une autre table), ou en ajouter une autre instruction delete pour supprimer la ligne référençant la clé primaire, avant de faire l'instruction delete que vous êtes en train de faire.

0

Ajouter à votre modèle Post: lorsque vous détruirez votre modèle Post

has_many :comments, dependent: :destroy 

Cela détruira les commentaires associés. Donc vous n'obtiendrez pas ConstraintException.

Vous pouvez trouver plus d'informations sur Rails associations here.