我正在开发一个Rails应用程序,为了看到带有一些演示内容的应用程序,我创建了一个rake任务,用一些虚拟数据填充数据库。相关代码在这里:
def make_comments
Post.all(:limit => 100).each do |post|
6.times do
author = Author.find_by_id(rand(100) + 1)
content = Faker::Lorem::sentence(5)
author.comments.create!(
:post_id => post,
:content => content
)
end
end
end
当我在Rails控制台中运行此代码时,我没有任何问题,但是当通过rake运行时(从任务“db:populate”调用方法),我收到错误:
rake aborted!
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
可能是什么问题?我正在运行Ruby 1.9.2,Rake 0.8.7和Rails 3.0.3,如果这有帮助的话。我的印象是从数据库中检索帖子有一些问题,但正如我所说,在“rails console”中运行时没有问题。
非常感谢您对此问题的任何帮助!如果需要,我可以提供有关我的设置的更多详细信息,但问题似乎与Rake / Rails有关。
谢谢!
编辑:我仍然不知道这里出了什么问题,但我设法通过迭代一些作者然后让他们评论随机帖子来实现它。我认为,这种解决方案也可以更好地模拟数据。
答案 0 :(得分:1)
Post.find(:all, :limit => 100).each do |post|
答案 1 :(得分:1)
如果您使用Rails 3查询语法会发生什么?:
Post.limit(100).each ...