繁体   English   中英

如何使用seed.rb中的随机值填充空属性

[英]How to populate empty attributes with random values from seeds.rb

我已经生成了具有以下属性的User模型: first_namelast_namecity 然后,我使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM