Часто возникает необходимость протестировать приложение на предмет работы с реальными данными. Причём, данные должны быть максимально приближены к реальным как с качественной стороны, так и с количественной. Работу по наполнению базы такими данными значительно упрощают гемы Populator и Faker.
Предположим, что у нас есть модель User:
Чтобы сгенерировать для таблицы users 1000 тестовых пользователей, будем использовать следующий код:
Следует отметить, что Populator не наследует ActiveRecord-модель, а работает с БД напрямую с целью повышения производительности. В качестве значения полей можно передавать массивы или рейнджи, Populator автоматически выберет случайное.
Предположим, что у нас есть модель 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