我对https://API.rubyonrails.org/classes/ActiveRecord/FixtureSet.html#class-ActiveRecord::FixtureSet-label-Label+references+for+associations+-28belongs_to-2C +has_one-2C+has_many-29感到相当困惑,特别是他们的例子,其中似乎带有has_many :monkeys
关系的Pirate
模型正在has_many
端定义一个fixture关联。
即,盗版reginald
具有monkey: george
### in pirates.yml
reginald:
name: Reginald the Pirate
monkey: george
### in monkeys.yml
george:
name: George the Monkey
pirate: reginald
但是,当我尝试类似的东西(略有不同)时,我收到一个错误。
# test/fixtures/books.yml
book_one:
title: lorem
chapters: chapter_one, chapter_two
# test/fixtures/chapters.yml
chapter_one
title: foo
chapter_two
title: bar
# Error when running fixtures/testing
ActiveRecord::Fixture::FixtureError: table "books" has no columns named "chapters"
另一个例子让我更加困惑,这个例子显示了一个模型的fixture,has_many :fruits
提供了一个水果列表来与fixture相关联。是的,文档在has_and_belongs_to_many
关系下显示了这个示例,但我想它可能也适用于has_many
关系。
### in monkeys.yml
george:
id: 1
name: George the Monkey
fruits: apple, orange, grape
### in fruits.yml
apple:
name: apple
orange:
name: orange
grape:
name: grape
所以我是不是该吃午饭了?这是不幸的,因为能够在has_many
端指定fixture关联是很好的。
1条答案
按热度按时间anauzrmj1#
显然,夹具不能在父模型之前创建关联记录。我建议看看factory_bot肯定可以使用回调来创建相关记录: