7

Ich habe drei Modelle: Book, genre, BookGenre, und hier sind Beziehungen:Rails: gegen Fremdschlüssel constraintRails

class BookGenre < ActiveRecord::Base 
    belongs_to :book 
    belongs_to :genre 
end 


class Book < ActiveRecord::Base 
    has_many :book_genres 
    has_many :genres, through: :book_genres 
end 


class Genre < ActiveRecord::Base 
    has_many :book_genres 
    has_many :books, through: :book_genres 
end 

Und dann verwende ich seed Dateidaten in diesen Tabellen zu setzen.

Aber wenn ich will wieder rake db:seed tun, es zeigte diesen Fehler

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: update or delete on table "books" violates foreign key constraint "fk_rails_4a117802d7" on table "book_genres" 
DETAIL: Key (id)=(10) is still referenced from table "book_genres". 

In meinem seed.rb

Book.destroy_all 
Genre.destroy_all 
...create data 
+1

hinzufügen 'abhängig: destroy' Option' HAS_MANY'- Definitionen –

+0

yeah! Sie waren eine große Hilfe, danke –

Antwort

11

hinzufügen dependent: :destroy Option zu Ihrem has_many Definitionen.

Check docs

5

Try this:

ActiveRecord::Base.connection.disable_referential_integrity do 
    Book.destroy_all 
    Genre.destroy_all 
    # ...create data 
end 
+0

das funktioniert auch. Vielen Dank –