Главная »
2010 »
Ноябрь »
5 » Rails. Загрузить данные в таблицы из YAML файлов
21:41 Rails. Загрузить данные в таблицы из YAML файлов |
Пусть у нас есть папка, в которой находяться yaml файли с данными для таблиц. Название таблицы и соответствующего yaml файла должны совпадать.
Создадим простой 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 "
Loaded 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 все таблицы очищаються автоматически
|
Просмотров: 590 |
Добавил: Sergey Saenko
| Рейтинг: 0.0/0 |