Я хочу заполнить свою базу данных с помощью гемблера и фейкера. Я просто следил за руководством по railscast. Если я просто буду следовать руководству, мой код будет выглядеть так:
namespace :db do
desc "fill compact tables with sample data"
task :populate => :environment do
require 'populator'
require 'faker'
[RepositoryCompact, BuildCompact, JobCompact].each(&:delete_all)
RepositoryCompact.populate 10 do |repository|
repository.name = Faker::Name.name
repository.description = Populator.sentences(1)
repository.owner_name = Faker::Name.name
repository.url = Faker::Internet.url
i = 0
BuildCompact.populate 1..10 do |build|
build.config = Populator.sentences(1..3)
build.repository_compact_id = repository.id
build.number = i
i++
build.result = 0 || 1
build.finished_at = 2.years.ago..Time.now
JobCompact.populate 1..5 do |job|
job.build_compact_id = build.id
job.allow_failure = 0 || 1
#job.finished_at = build.finished_at-(2..100)
job.language = [ruby, php, java, c, python, rubinius, jruby]
job.version = [1.9 .. 2.5]
job.result = 0 || 1
end
end
end
end
end
Если я запускаю rake db:populate
, связь, похоже, не распознается драгоценным камнем (undefined method repository_compact_id=for #<Populator::Record:0x0000010177ffb8>
). Но даже если закомментировать все, кроме части RepositoryCompact, грабли прерываются с помощью Validation failed: Name has already been taken
Я уверен, что правильно настроил модели и ассоциации. Это очевидная ошибка?
Может быть, самоцвет populator
слишком стар?
Заранее спасибо!