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