Deleting table data from staging table

Hello all,
I’m using Ruby 1.8.6 and Rails 2.3.3.
I’m new at Rails so bear with me, please.

My application reads in a csv file to a staging (imports) table then
compares the contents of the table to a main (projects) table. Then
imports all non-repetitive rows to the main table.
This application will be used periodically.

I know how to import the csv data to a table.
How do I delete all data prior to importing new data?

Thank you for all help.

JohnM

I have this:
imports_controller:

def process_csv
# First thing, clear “Imports” table of data
@import = Import.find(:all)
@import.destroy

file = params[:import][:file]

rowcount = 0

Import.transaction do
  FasterCSV.parse(file,
                  :headers => true,
                  :header_converters => :symbol ) do |row|
    Import.create!(row.to_hash)
    rowcount += 1
  end
end

flash[:notice] = "Successfully added #{rowcount} project(s)."

redirect_to :action => :process_csv

rescue => exception
# If an exception in thrown, the transaction rolls back and we end
up in this
# rescue block
error = ERB::Util.h(exception.to_s) # get the error and HTML escape
it
flash[:error] = “Error adding logs. (#{error}). Please try again.”
redirect_to :action => :index
end

When I do this I get this error…

“Error adding logs. (undefined method `destroy’ for #Array:0x241d1e0).
Please try again.”

Any clues?

Thanks,

JohnM

John M. wrote:

Hello all,
I’m using Ruby 1.8.6 and Rails 2.3.3.
I’m new at Rails so bear with me, please.

My application reads in a csv file to a staging (imports) table then
compares the contents of the table to a main (projects) table. Then
imports all non-repetitive rows to the main table.
This application will be used periodically.

I know how to import the csv data to a table.
How do I delete all data prior to importing new data?

Thank you for all help.

JohnM

2009/8/26 John M. [email protected]:

I know how to import the csv data to a table.
How do I delete all data prior to importing new data?

YourModel.delete_all

Colin

2009/8/26 John M. [email protected]:

I have this:
imports_controller:

def process_csv
  # First thing, clear “Imports” table of data
  @import = Import.find(:all)
  @import.destroy

Just use Import.delete_all, provided you do not need any callbacks etc.
destroy only works on a single record, you are trying to use it on an
array. You would have to do
@import.each {|i| i.destroy} or similar

Colin

Colin,
I used the array approach and it worked.

Like this…
@import = Import.find(:all)
@import.each { |i| i.destroy }

Thanks for the input.

John

Colin L. wrote:

2009/8/26 John M. [email protected]:

I have this:
imports_controller:

def process_csv
  # First thing, clear “Imports” table of data
  @import = Import.find(:all)
  @import.destroy

Just use Import.delete_all, provided you do not need any callbacks etc.
destroy only works on a single record, you are trying to use it on an
array. You would have to do
@import.each {|i| i.destroy} or similar

Colin