如何使用 seeds.rb 中的随机值填充空属性
How to populate empty attributes with random values from seeds.rb
我已经生成 User
模型,其属性为:first_name
、last_name
、city
。然后,我使用 seed.rb 和 gem 'faker' 创建了 200 个 class 实例。毕竟,我已经为这个模型添加了一个属性 - age:string,所以现在在 class 的每个实例中,年龄 = '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
此外,您可以将 Faker 与 Fabrication 组合以获得更多 酷 种子。
Faker::Name.name #=> "Christophe Bartell"
Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
您可以使用它从 db/seed.rb
运行 rake db:seed
生成随机数据。
@Simone Carletti
的回答很好...也许您会受益于 find_each
:
User.find_each do |user|
user.update_attribute :age, rand(10..99)
end
我已经生成 User
模型,其属性为:first_name
、last_name
、city
。然后,我使用 seed.rb 和 gem 'faker' 创建了 200 个 class 实例。毕竟,我已经为这个模型添加了一个属性 - age:string,所以现在在 class 的每个实例中,年龄 = '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
此外,您可以将 Faker 与 Fabrication 组合以获得更多 酷 种子。
Faker::Name.name #=> "Christophe Bartell"
Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"
您可以使用它从 db/seed.rb
运行 rake db:seed
生成随机数据。
@Simone Carletti
的回答很好...也许您会受益于 find_each
:
User.find_each do |user|
user.update_attribute :age, rand(10..99)
end