Sha256: a6380255f93849dbacf1841d37dd0e064f43880fee5a044f749a48f08fc59ab3

Contents?: true

Size: 884 Bytes

Versions: 4

Compression:

Stored size: 884 Bytes

Contents

module RailsData::Import

  # extend RailsData::Import
  # config do
  #   model BankPayment
  #   column :amount, header: 'My name', field: -> {}
  #   column :email, header: 'Email', field: -> {}
  # end
  attr_reader :record, :columns

  def config(&block)
    block.call if block_given?
  end

  def model(class_name)
    if class_name.respond_to?(:ancestors) && class_name.ancestors.include?(ActiveRecord::Base)
      @record = class_name
    else
      raise 'The collection must be a subclass of ActiveRecord::Base'
    end
  end

  def column(name, header: nil, field: nil)
    @columns ||= {}
    name = name.to_sym

    @columns[name] = {}

    if header.is_a?(String) && header.size > 0
      @columns[name][:header] = header
    else
      warn 'wrong header type'
    end

    if field.respond_to?(:call)
      @columns[name][:field] = field
    end

    self
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_data-1.0.2 lib/rails_data/import.rb
rails_data-1.0.1 lib/rails_data/import.rb
rails_data-1.0.0 lib/rails_data/import.rb
rails_data-0.0.1 lib/rails_data/import.rb