Sha256: fca8a25ae2a33139fc1407cea4dbc8dd9a309157d262bab1c5830cda81b9fd0f
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
module ActiveRecordCSVImporter # The CSV Header class Header include Virtus.model attribute :column_definitions, Array[ColumnDefinition] attribute :column_names, Array[String] def columns column_names.map do |column_name| Column.new( name: column_name, definition: find_column_definition(column_name) ) end end def column_name_for_model_attribute(attribute) column = columns.find { |c| c.definition.attribute == attribute if c.definition } column.name if column end def valid? missing_required_columns.empty? end # Returns Array[String] def required_columns column_definitions.select(&:required?).map(&:name) end # Returns Array[String] def missing_required_columns (column_definitions.select(&:required?) - columns.map(&:definition)) .map(&:name).map(&:to_s) end # Returns Array[String] def missing_columns (column_definitions - columns.map(&:definition)).map(&:name).map(&:to_s) end def column_definition_names column_definitions.map(&:name).map(&:to_s) end private def find_column_definition(name) column_definitions.find { |column_definition| column_definition.match?(name) } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord_csv_importer-0.1.1 | lib/activerecord_csv_importer/header.rb |