概要
Railsで準備されているseeds.rb
ファイルを使って、データベースの初期データを準備する手順。
Railsであらかじめdbディレクトリー下にseeds.rb
ファイルが準備されている。
1 2 3 4 5 6 7 |
# This file should contain all the record creation needed to seed the database with its default values. # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). # # Examples: # # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # Character.create(name: 'Luke', movie: movies.first) |
このファイルに初期データをセットするコードを書き、コンソールでrails db:seed
を実行すると、そのコードが実行される。
操作例
たとえばPostモデルで200件のダミーデータを準備する場合。
Postモデル
comment
フィールドだけを持つPostモデルを準備する。
1 2 3 4 5 6 7 8 9 |
class CreatePosts < ActiveRecord::Migration[5.1] def change create_table :posts do |t| t.string :comment t.timestamps end end end |
seeds.rbファイル
seeds.rbファイルに、200個のPostデータを書き込むコードを書く。
db/seeds.rb
1 2 3 |
200.times do |i| Post.create(comment:"#{i}番目の投稿") end |
Railsコマンド実行
以下のRailsコマンドでseeds.rb
ファイルを実行し、データベースにデータを書き込む。
1 |
[vagrant@vagrant gem_test]$ rails db:seed |
結果
以下のとおりデータが書き込まれる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
mysql> select * from posts; +-----+--------------------+---------------------+---------------------+ | id | comment | created_at | updated_at | +-----+--------------------+---------------------+---------------------+ | 1 | 0番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | | 2 | 1番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | | 3 | 2番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | | 4 | 3番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | | 5 | 4番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | ..... | 196 | 195番目の投稿 | 2021-04-17 02:34:36 | 2021-04-17 02:34:36 | | 197 | 196番目の投稿 | 2021-04-17 02:34:37 | 2021-04-17 02:34:37 | | 198 | 197番目の投稿 | 2021-04-17 02:34:37 | 2021-04-17 02:34:37 | | 199 | 198番目の投稿 | 2021-04-17 02:34:37 | 2021-04-17 02:34:37 | | 200 | 199番目の投稿 | 2021-04-17 02:34:37 | 2021-04-17 02:34:37 | +-----+--------------------+---------------------+---------------------+ 200 rows in set (0.00 sec) |