Проблема при переборе массива в Rails - PullRequest
1 голос
/ 12 декабря 2010

Я разрабатываю приложение на 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.

Спасибо!

Редактировать: Я до сих пор не знаю, что здесь происходит не так, но мне удалось заставить его работать, перебирая некоторых авторов и затем заставляя их комментировать случайные записи. Я думаю, что это решение лучше работает и для макетирования данных.

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Что произойдет, если вместо этого вы используете синтаксис запроса Rails 3?:

Post.limit(100).each ...
1 голос
/ 12 декабря 2010
Post.find(:all, :limit => 100).each do |post|
...