From ~:caboose
# this is used directly on models only
# Usage: Customer.to_tab_delimited
def self.to_tab_delimited(path = nil, columns = nil, options = nil)
columns ||= self.column_names
File.open(File.expand_path(path || "./#{table_name}.txt", RAILS_ROOT), 'w') do |file|
file.puts(columns.join("\t"))
# Notice this is very close to what the Array#to_tab_delimited below does, except Array only calls itself, meaning
# it only exports it's own contents.
self.find(:all, options).each do |rec|
row = columns.inject([]) do |arr, col|
if rec[col].is_a?(String)
arr << rec[col].gsub(/[\t\n]/, ' ')
else
arr << rec[col]
end
end
file.puts(row.join("\t"))
end
end
end
end