我已使用User
,first_name
,last_name
生成city
模型。然后,我使用seed.rb和gem'faker'创建了200个类的实例。毕竟,我在这个模型中添加了一个属性 - age:string,所以现在在类的每个实例中,age = 'nil'
。现在,我想用10..99范围内随机生成的数字填充每个用户。
这是来自seed.rb的代码:
users = User.all
users.each do |element|
element.age = rand(10..99).to_s
end
当我输入rake db:seed
时,它似乎是成功的但是当我检查数据库时,每个age:string
仍然是'nil'
。你知道可能出了什么问题吗?
答案 0 :(得分:1)
您正在分配值,但不保存。您应该将代码更改为
users = User.all
users.each do |element|
element.age = rand(10..99).to_s
element.save!
end
或只是
users = User.all
users.each do |user|
user.update_attribute(:age, rand(10..99))
end
如果您不需要验证记录,则以下内容更快
users = User.all
users.each do |user|
user.update_column(:age, rand(10..99))
end
答案 1 :(得分:0)
@Simone Carletti
的答案很好......也许你会从find_each
中受益:
User.find_each do |user|
user.update_attribute :age, rand(10..99)
end
答案 2 :(得分:-1)
此外,您可以将Faker与Fabrication结合使用以获取更多酷种子。
Faker::Name.name #=> "Christophe Bartell"
Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
您可以使用它从db/seed.rb
运行rake db:seed
生成随机数据。