Ich habe eine harte Zeit, herauszufinden, zu haben, was dieser Fehler bedeutet genau das:Verwirrung Abounds mit factory: has_many durch
An error occurred in a `before(:suite)` hook.
Failure/Error: FactoryGirl.lint
FactoryGirl::InvalidFactoryError:
The following factories are invalid:
* question - Validation failed: Option must
exist, Question must exist (ActiveRecord::RecordInvalid)
Dies sind die Fabriken:
# question has many options through quiz
FactoryGirl.define do
factory :question, class: 'Question' do
option "What color are your eyes"
end
end
# option has many questions through quiz
FactoryGirl.define do
factory :option, class: 'Option' do
option "blue"
end
end
# JoinTable
FactoryGirl.define do
factory :quiz, class: 'Quiz' do
option nil
question nil
end
end
Meine Vermutung ist, dass die nil
Recht Neben den Verbänden in Quiz hat factor etwas mit dem Fehler zu tun. Ich habe versucht, die FactoryGirl-Dokumente zu lesen, um zu sehen, wie man die richtigen Assoziationen erzeugt, aber bestimmte Dinge verstehe ich nicht. Zum Beispiel:
soll ich die Assoziationen in der Fabrik nur für die Join-Tabelle (Frage) erstellen?
wichtiger, da ich zuerst eine Frage erstellen und dann die Frage stellen möchte, welche Optionen es hat, wie erreiche ich das in der Factory?
Vielen Dank!
Edit:
Option Modell:
class Option < ApplicationRecord
has_many :quizzes
has_many :questions, through: :quizzes
end
Frage Modell
class Question < ApplicationRecord
has_many :quizzes
has_many :options, through: :quizzes
end
Quiz Modell
class Some::QuizQuestion < ApplicationRecord
belongs_to :questions
belongs_to :options
end
Ich denke, Sie müssen Ihre Modelle einschließen, damit wir die Validierungen sehen können, um eine gute Antwort auf diese zu bekommen. – Brad
Für Ihre zweite Frage könnten Sie Merkmale verwenden, um Fragen mit verschiedenen Optionen zu erstellen, siehe: https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#traits – David