Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中迭代数组时出现问题_Ruby On Rails_Arrays_Activerecord_Rake_Null - Fatal编程技术网

Ruby on rails 在Rails中迭代数组时出现问题

Ruby on rails 在Rails中迭代数组时出现问题,ruby-on-rails,arrays,activerecord,rake,null,Ruby On Rails,Arrays,Activerecord,Rake,Null,我正在开发一个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.

我正在开发一个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控制台”时没有问题

在此问题上的任何帮助都将不胜感激!如果需要,我可以提供更多关于我的设置的细节,但是这个问题似乎与Rake/Rails有关

谢谢


编辑:我仍然不知道这里出了什么问题,但我通过反复访问一些作者,然后让他们在随机帖子上发表评论,成功地解决了问题。我认为,这种解决方案在模拟数据方面也更有效。

如果改用Rails 3查询语法,会发生什么

Post.find(:all, :limit => 100).each do |post|
Post.limit(100).each ...

我还是犯了同样的错误——认为问题可能只是Rake的一个bug。你考虑过使用rails提供的内置db:seed功能吗?你也可以发布你的Rake任务吗?我的直觉是,您的Rake任务并不依赖于
环境
。您的任务应该如下所示:task:populate=>:environment do SomeClass.make_commentsend@violet我确实有适当的环境设置,但显然@Beerlington建议的新限制语法解决了这个问题。这解决了这个问题!非常感谢,我甚至不知道Rails3有这种新语法!这只是冰山一角。检查导轨