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