[英]How to populate empty attributes with random values from seeds.rb
我已经生成了具有以下属性的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'
。 您知道什么地方可能出问题了吗?
您正在分配值,但是没有保存它。 您应该将代码更改为
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
@Simone Carletti
的答案很好...也许您会从find_each
受益:
User.find_each do |user|
user.update_attribute :age, rand(10..99)
end
另外,您可以将Faker与Fabrication结合使用以获得更酷的种子。
Faker::Name.name #=> "Christophe Bartell"
Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
您可以使用它从运行rake db:seed
db/seed.rb
生成随机数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.