Это то, что я в конечном итоге делает:
# app/models/mymodel.rb
class MyModel < ActiveRecord::Base
def self.import(csv_file)
create_count = 0
CSV.foreach(csv_file.path, headers: true) do |row|
Model.create! row.to_hash
create_count += 1
end
return create_count
end
end
# app/controllers/mycontroller.rb
class MyController < ApplicationController
def import
begin
created_count = MyModel.import(params[:file])
redirect_to root_url, notice: "#{created_count} things imported."
rescue
redirect_to root_url, error: "Couldn't import CSV file, nothing imported."
end
end
end
другой реализации, которые также, вероятно, работать:
# app/controllers/mycontroller.rb
class MyController < ApplicationController
def import
begin
before_count = MyModel.count
MyModel.import(params[:file])
after_count = MyModel.count
added_count = before_count - after_count
redirect_to root_url, notice: "#{added_count} things imported."
rescue
redirect_to root_url, error: "Couldn't import CSV file, nothing imported."
end
end
end
Вы можете разместить метод импорта, пожалуйста. По сути, вы должны использовать счетчик. –
Вот что я в итоге сделал. Я скоро отправлю код – springloaded
Не случайно ли это ['activerecord-import'] (https://github.com/zdennis/activerecord-import)? UPD: Я думаю, нет, аргументы, похоже, не совпадают. –