Стаття українською. Ruby on Rails, seed, gem Faker — генерація фейкових даних
В попередній статті ми розглянули як за допомогою STI та belongs_to — створити моделі і структуру даних для зберігання адреси. В цій ми розглянемо як за допомогою gem Faker згенерувати трохи даних для подальшого експериментування. Почнемо.
Для початку трохи теорії.
Перше — для генерації стартових даних в проектах Ruby on Rails — використовується механізм seed. Що це таке:
To add initial data after a database is created, Rails has a built-in ‘seeds’ feature that makes the process quick and easy. This is especially useful when reloading the database frequently in development and test environments. It’s easy to get started with this feature: just fill up db/seeds.rb with some Ruby code, and run rails db:seed
Тобто, в файл seeds.rb — ми пишемо звичайний ruby код — котрий виконається і зробить те що нам потрібно.
Далі, що таке gem Faker.
A library for generating fake data such as names, addresses, and phone numbers.
Тобто, за допомогою цього gem — можна згенерувати собі дані — котрі на перший вигляд будуть схожі на реальні. Там дуже багато типів даних — всі їх можна глянути тут — https://github.com/faker-ruby/faker#generators
Ну а ми використаємо Faker::Address, а конкретно в нашому випадку буде використано: Faker::Address.state_abbr, Faker::Address.city, Faker::Address.street_name.
Ну що ж — пишемо код.
В файл db/seeds.rb пишемо наступне
Що ми тут робимо. Спочатку видаляємо всі дані. потім додаємо 10 штатів, в кожний штат — 10 міст, і в кожне місто — 10 вулиць.
Тепер запускаємо за допомогою команди rails db:seed
Ну і звісно перевіряємо нашим старим методом :)
p ActiveRecord::Base.connection.exec_query(‘select * from address_parts’)
Ось і все. У нас є блок даних для роботи з адресами. А в наступній статті ми побалакаємо як за допомогою Rails та Stimulus згенерувати 3 випадайки в котрі динамічно будуть загружатись пов’язані дані.