私はRails 5.0.0.rc1、ruby 2.3.0p0、factory_girl(4.7.0)、factory_girl_rails(4.7.0)、faker(1.6.3)を使用しています。私のコンソールでFactoryGirlの作成メソッドが無限ループに陥るのはなぜですか?
、私&は以下で入手できます:ここで
[1] pry(main)> q1 = FactoryGirl.create(:question)
(0.2ms) BEGIN
SQL (1.1ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:03 UTC], ["updated_at", 2016-05-13 00:41:03 UTC]]
(2.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.4ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:04 UTC], ["updated_at", 2016-05-13 00:41:04 UTC]]
(1.4ms) COMMIT
(0.1ms) BEGIN
SQL (0.4ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:04 UTC], ["updated_at", 2016-05-13 00:41:04 UTC]]
(0.5ms) COMMIT
(0.2ms) BEGIN
SQL (0.3ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:04 UTC], ["updated_at", 2016-05-13 00:41:04 UTC]]
(0.3ms) COMMIT
(0.1ms) BEGIN
SQL (0.3ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:04 UTC], ["updated_at", 2016-05-13 00:41:04 UTC]]
(0.3ms) COMMIT
(0.1ms) BEGIN
SQL (0.8ms) INSERT INTO "users" ("email", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["email", "[email protected]"], ["created_at", 2016-05-13 00:41:04 UTC], ["updated_at", 2016-05-13 00:41:04 UTC]]
は私Question
工場である:ここでは
# == Schema Information
#
# Table name: questions
#
# id :integer not null, primary key
# title :string
# body :text
# user_id :integer
# accepted_answer_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Question < ApplicationRecord
belongs_to :user
belongs_to :accepted_answer, class_name: "Answer"
has_many :answers
end
されています。ここでは
# == Schema Information
#
# Table name: questions
#
# id :integer not null, primary key
# title :string
# body :text
# user_id :integer
# accepted_answer_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
FactoryGirl.define do
factory :question do
user
association :accepted_answer, factory: :answer
title { Faker::Lorem.sentence(3, true, 4) }
body { Faker::Lorem.paragraphs(2, true) }
end
end
は私Question
モデルです私のUser
工場:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# email :string
# created_at :datetime not null
# updated_at :datetime not null
#
FactoryGirl.define do
factory :user do
email { Faker::Internet.email }
end
end
ここに私のUser
モデルさ:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# email :string
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ApplicationRecord
has_many :questions
has_many :answers
end
編集1
ここでは私のAnswer
工場である:ここでは
# == Schema Information
#
# Table name: answers
#
# id :integer not null, primary key
# body :text
# user_id :integer
# question_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
FactoryGirl.define do
factory :answer do
question
user
body { Faker::Lorem.paragraphs(2, true) }
end
end
は私Answer
モデルです:
# == Schema Information
#
# Table name: answers
#
# id :integer not null, primary key
# body :text
# user_id :integer
# question_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Answer < ApplicationRecord
belongs_to :question
belongs_to :user
end
エンドユーザ作成ループを引き起こす原因は何ですか?
Answerファクトリーを見てみましょう。 –
[FactoryGirlの循環依存関係と検証]の可能な複製(0120-337-002) –
@DaveSchweisguth Answerファクトリを追加しました。 – marcamillion