Ruby on Rails で seed データの追加や管理をカンタンにしてくれる seed-fu gem が便利なのでご紹介します。
使い方は db/fixtures 以下に users.rb とかいうファイル名で、簡単には下記のような感じで書きます。
db/fixtures/users.rb
User.seed do |s|
s.id = 1
s.login = "jon"
s.email = "[email protected]"
s.name = "Jon"
end
User.seed do |s|
s.id = 2
s.login = "emily"
s.email = "[email protected]"
s.name = "Emily"
end
全ての seed ファイルからインポートするには、単に
rake db:seed_fu
を実行すればよいです。
ファイルやモデル別にロードするには、下記のような感じで rake タスクを実行する。
rake db:seed_fu FIXTURE_PATH=path/to/fixtures
rake db:seed_fu FILTER=users,articles
当然だが Ruby コードが書けるので、こんな感じに CSV から DB へインポートみたいなことも書ける。
db/fixtures/users.rb
require 'csv'
csv = CSV.read('db/fixtures/users_master.csv')
csv.each_with_index do |user, i|
# skip a label row
next if i === 0
name = user[0]
age = user[1].to_i
User.seed do |s|
s.id = i
s.name = name
s.age = age
end
end
地味に便利ですね。