Skip to content

Instantly share code, notes, and snippets.

@adeonhy
Last active August 29, 2015 14:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adeonhy/860abe69638aeb874cd6 to your computer and use it in GitHub Desktop.
Save adeonhy/860abe69638aeb874cd6 to your computer and use it in GitHub Desktop.
module ModelFormat
#fields = [
# ["column1", :method1],
# ["column2", :method2],
# ["column3", [:method3_1, :method3_2]],
#]
def define_csv(fields)
define_method :to_csv do
headers, columns = fields.transpose
records = all.map do |obj|
columns.map do |col|
methods = [col] unless col.instance_of?(Array)
methods.reduce(obj) {|o, m| o.send m }
end
end
rows = [headers] + records
CSV.generate(col_sep: "\t") do |csv|
rows.each do |row|
csv << row if row
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment