module GreenMonster::ActiveRecordExtension::RubyXLConverter

Attributes

after_decode_callback[R]
schema[R]

Public Class Methods

after_decode(&block) click to toggle source

ファイルから読み込んだ後に実行するコールバック TODO: 分離予定、設計しなおし予定

# File lib/green_monster/active_record_extension/ruby_xl_converter.rb, line 23
def after_decode(&block)
  @after_decode_callback = block if block_given?
end
find_or_build_from_row(row) click to toggle source

外部ファイルから読み込んだ内容でオブジェクトを生成

# File lib/green_monster/active_record_extension/ruby_xl_converter.rb, line 28
def find_or_build_from_row(row)
  decoder = Decoder.new(self.schema)
    .extend(ValueRubyXL)
  attrs = if self.after_decode_callback.present?
    decoder.convert(row, &self.after_decode_callback)
  else
    decoder.convert(row)
  end

  obj = self.find_by("#{self.schema.index_key}" => attrs[self.schema.index_key]) || self.new
  obj.assign_attributes(attrs)

  obj
end
schema_is() { |schema| ... } click to toggle source

スキーマ定義

# File lib/green_monster/active_record_extension/ruby_xl_converter.rb, line 16
def schema_is
  @schema = Schema.new
  yield(@schema)
end

Public Instance Methods

to_row() click to toggle source

外部ファイル用にモデルデータを変換

# File lib/green_monster/active_record_extension/ruby_xl_converter.rb, line 45
def to_row
  Encoder.new(self.class.schema).convert(self)
end