Sto tentando di popolare il mio database SQLite3 con un semplice file seme che dovrebbe creare un gruppo di film nella tabella Film e quindi creare alcuni commenti a questo film che sono memorizzati nella tabella dei commenti.Impossibile chiamare create a meno che l'errore genitore non venga salvato durante il seeding nei binari
formats = %w(Beta VHS IMAX HD SuperHD 4K DVD BlueRay)
30.times do
film = Film.create(title: "#{Company.bs}",
director: "#{Name.name}",
description: Lorem.paragraphs.join("<br/>").html_safe,
year: rand(1940..2015),
length: rand(20..240),
format: formats[rand(formats.length)]
)
film.save
(rand(0..10)).times do
film.comments.create(author: "#{Name.name}",
title: "#{Company.bs}",
content: Lorem.sentences(3).join("<br/>").html_safe,
rating: rand(1..5)
)
end
end
Una volta che eseguo rake db: seed ho inevitabilmente ottengo l'errore
ActiveRecord :: RecordNotSaved: Non è possibile chiamare creare meno che il genitore viene salvato
e vengono aggiunti nessun record a Film o Commenti
Il mio file film.rb è
class Film < ActiveRecord::Base
has_many :comments
validates_presence_of :title, :director
validates_length_of :format, maximum: 5, minimum:3
validates_numericality_of :year, :length, greater_than: 0
validates_uniqueness_of :title
paginates_per 4
end
Il limite di lunghezza su 'format' genera l'errore durante la creazione di un film con i formati selezionati dalla lista 'formato'
È possibile aggiungere il file film.rb. Credo che a causa di un errore il film non venga salvato. Quindi quando cerchi di creare commenti per quel film, non viene creato. Abbiamo bisogno di trovare quale errore impedisce che il film venga creato per correggerlo prima. – coderhs
o semplicemente cambiate 'Film.create' in' Film.create! 'E dovreste stabilire quale validazione impedisce il salvataggio del film. – basiam
Sono d'accordo con @Coderhs. Abbiamo bisogno di vedere cosa Film appartiene a. C'è qualche logica nel tuo modello che ha bisogno del genitore del film per essere salvato in primo luogo. Una volta che sappiamo quale Film appartiene_per aggiungere prima i dati seme per il genitore, che dovrebbe creare i dati figlio a seconda che la logica sia corretta o meno. – James