lib/ine/places.rb in ine-places-0.1.3 vs lib/ine/places.rb in ine-places-0.1.4
- old
+ new
@@ -1,9 +1,10 @@
require "ine/places/version"
require "csv"
require "ostruct"
require "active_support/all"
+require "byebug"
module INE
module Places
require "ine/places/csv_record"
@@ -20,8 +21,24 @@
AutonomousRegionsCollection.records
ProvincesCollection.records
PlacesCollection.records
nil
+ end
+
+ def self.hydratate(klass, data_path, options)
+ unless File.file?(data_path)
+ raise "Missing data file: #{data_path}"
+ end
+
+ data = CSV.read(data_path, headers: true)
+ klass.all.map do |obj|
+ obj.tap do
+ value = if r = data.detect{|row| row[options[:id_column]] == obj.id }
+ r[options[:value_column]]
+ end
+ obj.data.send((options[:as].to_s + '=').to_sym, value)
+ end
+ end
end
end
end