Создадим простой rake-task, который поможет нам наполнить таблицы данными из yaml файлов.
"Path to Yaml directory" - путь к директории с Yaml файлам
table1,table2,table3 - название таблиц в БД.
Реализация таска:
require 'yaml'
namespace :db do
DATA_DIRECTORY = "Path to Yaml directory"
namespace :yaml do
TABLES = %w-table1 table2 table3-
desc 'Load the yaml data'
task :load => :environment do |t|
TABLES.each do |table_name|
path = DATA_DIRECTORY + table_name.to_s + '.yml'
model_name = ActiveSupport::Inflector.classify table_name
model_class = ActiveRecord.const_get(model_name)
eval "#{model_name}.delete_all"
data = YAML.load_file(path)
element = {}
data.each do |item|
item.attributes.each do |key, value|
element[key] = value
end
model_instance = model_class.create(element)
model_instance.save
end
puts "Loaded data from #{table_name}.yml"
end
puts "\nLoaded all data from yml files"
end
desc 'Remove data'
task :remove => :environment do |t|
TABLES.each do |table_name|
model_name = ActiveSupport::Inflector.classify table_name
eval "#{model_name}.delete_all"
end
end
end
end
Теперь для того чтобы запустить таск: rake db:yaml:load
Почистить таблицы: rake db:yaml:remove
Посмотреть все доступные таски в системе: rake -T
Перед каждым запуском rake db:yaml:load все таблицы очищаються автоматически
Комментариев нет:
Отправить комментарий