Я разрабатываю приложение на 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.
Спасибо!
Редактировать: Я до сих пор не знаю, что здесь происходит не так, но мне удалось заставить его работать, перебирая некоторых авторов и затем заставляя их комментировать случайные записи. Я думаю, что это решение лучше работает и для макетирования данных.