Module Sequel::Plugins::CsvSerializer
In: lib/sequel/plugins/csv_serializer.rb

csv_serializer handles serializing entire Sequel::Model objects to CSV, as well as support for deserializing CSV directly into Sequel::Model objects. It requires the csv standard library.

Basic Example:

  album = Album[1]
  album.to_csv(write_headers: true)
  # => "id,name,artist_id\n1,RF,2\n"

You can provide options to control the CSV output:

  album.to_csv(only: :name)
  album.to_csv(except: [:id, :artist_id])
  # => "RF\n"

to_csv also exists as a class and dataset method, both of which return all objects in the dataset:

  Album.to_csv
  Album.where(artist_id: 1).to_csv

If you have an existing array of model instances you want to convert to CSV, you can call the class to_csv method with the :array option:

  Album.to_csv(array: [Album[1], Album[2]])

In addition to creating CSV, this plugin also enables Sequel::Model classes to create instances directly from CSV using the from_csv class method:

  csv = album.to_csv
  album = Album.from_csv(csv)

The array_from_csv class method exists to parse arrays of model instances from CSV:

  csv = Album.where(artist_id: 1).to_csv
  albums = Album.array_from_csv(csv)

These do not necessarily round trip, since doing so would let users create model objects with arbitrary values. By default, from_csv will call set with the values in the hash. If you want to specify the allowed fields, you can use the :headers option.

  Album.from_csv(album.to_csv, headers: %w'id name')

If you want to update an existing instance, you can use the from_csv instance method:

  album.from_csv(csv)

Usage:

  # Add CSV output capability to all model subclass instances (called
  # before loading subclasses)
  Sequel::Model.plugin :csv_serializer

  # Add CSV output capability to Album class instances
  Album.plugin :csv_serializer

Methods

configure  

Classes and Modules

Module Sequel::Plugins::CsvSerializer::ClassMethods
Module Sequel::Plugins::CsvSerializer::DatasetMethods
Module Sequel::Plugins::CsvSerializer::InstanceMethods

Constants

CSV = Object.const_defined?(:CSV) ? ::CSV : ::FasterCSV

Public Class methods

Set up the column readers to do deserialization and the column writers to save the value in deserialized_values

[Source]

    # File lib/sequel/plugins/csv_serializer.rb, line 72
72:       def self.configure(model, opts = OPTS)
73:         model.instance_exec do
74:           @csv_serializer_opts = (@csv_serializer_opts || OPTS).merge(opts)
75:         end
76:       end

[Validate]