【发布时间】:2012-01-23 13:09:36
【问题描述】:
我的数据库中有以下表格:
- 用户 - 有一个个人资料,有多个相册
- 个人资料 - 属于用户
- PhotoAlbum(s) - 属于用户,有很多照片
- 照片 - 属于 PhotoAlbum
Faker 在填充我的用户表时工作正常,但我现在也希望更新我的配置文件表,但它根本不起作用。数据库中的行仍然是空的。运行 rake db:populate 时没有出现任何错误。
我是否遗漏了什么,请帮我看看哪里出了问题,并帮助我想出一个解决方案,因为当我需要填充其他表格时,这也会对我有所帮助。我从这个答案中学到的东西可以帮助我完成我即将完成的其他任务。
libs/task/sample_data.rake
namespace :db do
desc "Create user records in the development database."
task :populate => :environment do
require 'faker'
def randomDate(params={})
years_back = params[:year_range] || 5
latest_year = params [:year_latest] || 0
year = (rand * (years_back)).ceil + (Time.now.year - latest_year - years_back)
month = (rand * 12).ceil
day = (rand * 31).ceil
series = [date = Time.local(year, month, day)]
if params[:series]
params[:series].each do |some_time_after|
series << series.last + (rand * some_time_after).ceil
end
return series
end
date
end
def decimal_selection_array(start,limit,step_size=1)
decimal_array = (start..limit).step(step_size).map{|i| i.to_s}.to_a
decimal_array.insert(0,"Below #{start.to_f}")
decimal_array.insert(-1,"Above #{limit.to_f}")
end
100.times do |n|
username = "#{Faker::Name.first_name}#{n}"
u = User.create!(
:username => username,
:email => Faker::Internet.email,
:password => "foobar"
)
u.profile.update_attributes(
:motd => Faker::Lorem.words,
#Profile details
:first_name => Faker::Name.first_name,
:last_name => Faker::Name.last_name,
:birthday => randomDate(:year_range => 60, :year_latest => 22),
:gender => (1..2).to_a.sample,
:marital_status => (1..7).to_a.sample,
:sexual_preference => (1..3).to_a.sample,
:ethnicity => (1..10).to_a.sample,
:country => Faker::Address.country,
:location => Faker::Address.country,
#About the user
:about_me => Faker::Lorem.paragraph,
#Personal stats
:height => decimal_selection_array(5.0,7.0,0.1).to_a.sample,
:body_type => (1..7).to_a.sample,
:eye_colour => (1..6).to_a.sample,
:drugs => (1..4).to_a.sample,
:alcohol => (1..4).to_a.sample,
:cigarettes => (1..3).to_a.sample,
:likes => Faker::Lorem.sentence,
:dislikes => Faker::Lorem.sentence,
:bad_habits => Faker::Lorem.sentence,
#Favourite things
:food => Faker::Lorem.sentence,
:music => Faker::Lorem.sentence,
:television => Faker::Lorem.sentence,
:book => Faker::Lorem.sentence,
:animal => Faker::Lorem.sentence,
:place => Faker::Lorem.sentence,
:possesion => Faker::Lorem.sentence
)
end
end
end
亲切的问候
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems