module CsvRowModel::Export::DynamicColumns

Public Instance Methods

define_dynamic_attribute_method(column_name) click to toggle source

Define default attribute method for a dynamic_column @param column_name [Symbol] the cell’s column_name

# File lib/csv_row_model/export/dynamic_columns.rb, line 31
def define_dynamic_attribute_method(column_name)
  define_method(column_name) do
    context.public_send(column_name).map do |header_model|
      self.class.format_cell(
        public_send(self.class.singular_dynamic_attribute_method_name(column_name), header_model),
        column_name,
        self.class.dynamic_index(column_name),
        context
      )
    end
  end

  define_method(singular_dynamic_attribute_method_name(column_name)) { |header_model| header_model }
end
dynamic_column(column_name, options={}) click to toggle source

See {Model::DynamicColumns#dynamic_column}

Calls superclass method
# File lib/csv_row_model/export/dynamic_columns.rb, line 24
def dynamic_column(column_name, options={})
  super
  define_dynamic_attribute_method(column_name)
end
formatted_attributes() click to toggle source

See Model::Export#formatted_attributes

Calls superclass method
# File lib/csv_row_model/export/dynamic_columns.rb, line 16
def formatted_attributes
  super.merge(formatted_attributes_from_column_names(self.class.dynamic_column_names))
end
to_row() click to toggle source

@return [Array] an array of public_send(column_name) of the CSV model

Calls superclass method
# File lib/csv_row_model/export/dynamic_columns.rb, line 11
def to_row
  super.flatten
end