HwticFinder:ERBでActiveRecord操作文を作る
テンプレートファイル dish_ingredient_template.rhtml
dish = Dish.find(:first, :conditions => ['name = ?', '<%= @dish.name %>']) ingredient_names = [ '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ] ingredient_names.each { |ingredient_name| ingredient = Ingredient.find(:first, :conditions => ['name = ?', ingredient_name]) DishIngredient.create :dish_id => dish.id, :ingredient_id => ingredient.id }
で、これを使うデータ生成スクリプトは、
require 'rubygems' require_gem 'activerecord' require '../app/models/dish' require 'erb' ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :dbfile => '../db/HwticFinder_dev.db' ) dishes = Dish.find :all, :order => "id" erb = ERB.new(File.read('dish_ingredient_template.rhtml')) outfile = File.open 'dish_ingredient_migration.txt', 'w' outfile.puts 'DishIngredient.transaction {' dishes.each {|@dish| outfile.puts " #" outfile.puts " ##{@dish.name} (p.#{@dish.page_number})" outfile.puts " #" outfile.puts erb.result } outfile.puts '}'
これを実行して出来上がったテキストファイルの、料理ごと配列部分に材料名をぽちぽち入れていく。
なんだかすごーく二度手間っぽいが。どっちみち本を見ながら入れるのだから、妙に凝ったことをするよりもキーボードから打ち込んだ方が速い。ATOKの補完機能もあるし、データも限られているし、これでいい。細かいことは気にしない!