我可以看到两个问题:
-
Movie.create
,您需要删除方括号。那是因为ActiveRecord
create
-
检查是否
movie
是
nil
不是正确的测试
电影
将始终存在,即使它未保存到数据库。更改测试
unless movie.nil?
到
if movie.persisted?
这将避免由于试图将评论保存到未保存到数据库的电影中而导致的错误。
100.times do
movie = Movie.create(name: Faker::Book.title,
director: Faker::Name.name,
description: Faker::FamilyGuy.quote,
year: rand(1920..2018),
length: rand(80..240),
format: formats[rand(formats.length)],
genre: genres[rand(genres.length)],
image: images[rand(images.length)],
thumbnail: images[rand(images.length)])
if movie.persisted?
rand(1..10).times do
movie.comments.create(
author: Faker::Name.name,
title: Faker::Book.title,
content: Faker::FamilyGuy.quote,
rating: rand(1..5)
)
end
end
puts movie.inspect
end
为什么有些电影没有被保存?我怀疑你的电影片名快用完了,然后你的独特性约束就失败了。Faker对任何类别的回复数量都是有限的。我认为只有22个是独一无二的
Faker::Book.title
响应。