Sha256: 05153f8948c78bd2bacefb8be8276273bca11140efab370008bad7d85ba62188

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

# encoding: utf-8

class EsrFile < ActiveRecord::Base
  # Access restrictions
  attr_accessible :file, :remarks

  # Default sorting
  default_scope order('created_at DESC')

  # File upload
  mount_uploader :file, EsrFileUploader
  validates :file, :presence => true

  has_many :esr_records, :dependent => :destroy

  # String
  def to_s(format = :default)
    case format
    when :long
      s = ''
      esr_records.each {|record|
        s += record.to_s + "\n"
      }
      s
    else
      "#{updated_at.strftime('%d.%m.%Y')}: #{file_identifier}"
    end
  end

  after_save :create_records

  private
  def create_records
    File.new(file.current_path).each do |line|
      if EsrRecord.supported_line?(line)
        esr_records << create_esr_record(line)
      else
        Rails.logger.info "VESR: Ignoring line #{line}"
      end
    end
  end

  def create_esr_record(line)
    record = EsrRecord.new.parse(line)
    record.save
    Rails.logger.error "VESR: Record #{record.inspect} is invalid: #{record.errors.inspect}" unless record.valid?
    record
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vesr-1.1.1 app/models/esr_file.rb
vesr-1.1.0 app/models/esr_file.rb
vesr-1.0.1 app/models/esr_file.rb