Pull to refresh

Заполнение БД тестовыми данными при помощи Populator и Faker

Reading time1 min
Views6.4K
Часто возникает необходимость протестировать приложение на предмет работы с реальными данными. Причём, данные должны быть максимально приближены к реальным как с качественной стороны, так и с количественной. Работу по наполнению базы такими данными значительно упрощают гемы Populator и Faker.

Предположим, что у нас есть модель User:
  • email:string
  • first_name:string
  • last_name:string
  • ssn:string
  • security_question:string
  • answer:string
  • phone:string
  • address:string
  • city:string
  • state:string
  • zip:string

Чтобы сгенерировать для таблицы users 1000 тестовых пользователей, будем использовать следующий код:

require 'populator'
require 'faker'

# Populate DB with Users
User.populate(1000) do |user|
  user.email = Faker::Internet.email
  user.first_name = Faker::Name.first_name
  user.last_name = Faker::Name.last_name
  user.ssn = Faker.numerify("###-##-####")
  user.security_question = Populator.words(4..10)
  user.answer = Populator.words(1..3)
  user.phone = Faker.numerify("#"*10)
  user.address = Faker::Address.street_address
  user.city = Faker::Address.city
  user.state = Faker::Address.us_state_abbr
  user.zip = Faker::Address.zip_code
end


Следует отметить, что Populator не наследует ActiveRecord-модель, а работает с БД напрямую с целью повышения производительности. В качестве значения полей можно передавать массивы или рейнджи, Populator автоматически выберет случайное.

user.sex = ["male", "female"]
user.age = 20..30
Tags:
Hubs:
+44
Comments22

Articles