seedで初期データを追加してみる
seedの機能を使ってデータを入れてみる。
とりあえずモデルを作成し、テーブルを作成する。
$ rails generate model user name:string point:integer flag:boolean day:date
$ rake db:migrate
直接createで追加する場合
seed.rbに、下記のように初期データを指定する。
$ vi db/seeds.rb
User.create(:name => '佐藤', :point => 100, :flag => true, :day => '2001/1/1') User.create(:name => '鈴木', :point => 200, :flag => false, :day => '2002/2/2') User.create(:name => '高橋', :point => 300, :flag => true, :day => '2003/3/3') User.create(:name => '田中', :point => 400, :flag => false, :day => '2004/4/4') User.create(:name => '伊藤', :point => 500, :flag => true, :day => '2005/5/5')
db:seedコマンドを実行するとDBに初期データが追加される。
$ rake db:seed
mysqlに入って確認すると、下記のように入っている。
mysql> select * from users; +----+--------+-------+------+------------+---------------------+---------------------+ | id | name | point | flag | day | created_at | updated_at | +----+--------+-------+------+------------+---------------------+---------------------+ | 1 | 佐藤 | 100 | 1 | 2001-01-01 | 2014-01-04 07:06:35 | 2014-01-04 07:06:35 | | 2 | 鈴木 | 200 | 0 | 2002-02-02 | 2014-01-04 07:06:35 | 2014-01-04 07:06:35 | | 3 | 高橋 | 300 | 1 | 2003-03-03 | 2014-01-04 07:06:35 | 2014-01-04 07:06:35 | | 4 | 田中 | 400 | 0 | 2004-04-04 | 2014-01-04 07:06:35 | 2014-01-04 07:06:35 | | 5 | 伊藤 | 500 | 1 | 2005-05-05 | 2014-01-04 07:06:35 | 2014-01-04 07:06:35 | +----+--------+-------+------+------------+---------------------+---------------------+
CSVから追加する場合
CSVのデータを作成する。
$ vi db/user.csv
佐藤, 100, true, '2001/1/1' 鈴木, 200, false, '2002/2/2' 高橋, 300, true, '2003/3/3' 田中, 400, false, '2004/4/4' 伊藤, 500, true, '2005/5/5'
seed.rbには、CSVから読み込むように書く。
$ vi db/seeds.rb
require "csv" CSV.foreach('db/user.csv') do |row| User.create(:name => row[0], :point => row[1], :flag => row[2], :day => row[3]) end
db:seedコマンドを実行するとDBに初期データが追加される。
$ rake db:seed