2010-09-13 14 views
9

Mam aplikację Rails 3 z klasą użytkownika oraz plik rozdzielany tabulatorami użytkowników, które chcę zaimportować.jak importować dane do szyn?

Jak uzyskać dostęp do usługi Active wzorcowym poza konsolą szynach, tak, że mogę napisać skrypt do zrobienia

require "???active-record???" 

File.open("users.txt", "r").each do |line| 
    name, age, profession = line.strip.split("\t") 
    u = User.new(:name => name, :age => age, :profession => profession) 
    u.save 
end 

Czy mogę korzystać z „Ar-rozszerzenia” Gem, czy jest jakiś inny droga? (Nie bardzo zależy mi teraz na prędkości, po prostu chcę czegoś prostego.)

Odpowiedz

14

Możesz napisać metodę rake do tak. Dodaj do tego pliku my_rakes.rake w your_app katalogu/lib/zadania:

desc "Import users." 
    task :import_users => :environment do 
    File.open("users.txt", "r").each do |line| 
     name, age, profession = line.strip.split("\t") 
     u = User.new(:name => name, :age => age, :profession => profession) 
     u.save 
    end 
    end 

następnie wywołać $ rake import_users z folderu głównego aplikacji w terminalu.

4

Użyj klejnotu do importowania zbiorczego.

zainstalować za pośrednictwem Gemfile:

gem 'activerecord-import' 

Zbierz swoich użytkowników i import:

desc "Import users." 
task :import_users => :environment do 
    users = File.open("users.txt", "r").map do |line| 
    name, age, profession = line.strip.split("\t") 
    User.new(:name => name, :age => age, :profession => profession) 
    end 
    User.import users 
end 
+0

A co, jeśli chcę, aby sprawdzić, czy wpis istnieje i wykonać aktualizację jeśli to robi. Jeśli jest to nowy wpis, chciałbym go stworzyć. Nie wiesz, czy to działałoby z mapowaniem? – MMachinegun

Powiązane problemy