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