我在控制器中有兩種非常類似代碼的方法。想知道我該如何幹掉它們!他們都使用csv-importer gem來解析csv文件。在控制器方法中烘乾類似的代碼
sales_controller.rb
def import_csv_test
user_id = params[:user_id]
import = ImportSaleCSV.new(file: params[:file]) do
after_build do |sale|
sale.user_id = user_id
skip! if sale.email == nil
skip! if sale.order_date == nil
skip! if sale.amount == nil
end
end
import.run!
redirect_to lifecycle_grid_sales_path, notice: import.report.message
end
def import_ftp
user_id = params[:user_id]
import = ImportSaleCSV.new(path: './public/uploads/gotcha.csv') do
after_build do |sale|
sale.user_id = user_id
skip! if sale.email == nil
skip! if sale.order_date == nil
skip! if sale.amount == nil
end
end
import.run!
redirect_to lifecycle_grid_sales_path, notice: import.report.message
end
謝謝!
是的,這似乎是唯一的區別。 –
這看起來不錯,謝謝! 我會直接在我的sales_controller.rb中定義導入方法嗎? 而且這樣稱呼它? '高清import_csv_test 進口({文件:PARAMS [:文件]}) 結束 ' – AakLak
呀,你能做到這一點。似乎這種方法不應該存在於你的控制器中。所以你可能需要將它解壓到別的地方。最好的選擇是使用單個公共方法'call'的服務類(與'import'方法完全相同)以及若干需要的私有方法。因此,在您的控制器中,您將能夠創建該服務的實例並調用它的「調用」方法。我會用一些有用的鏈接編輯我的答案給你。 – VAD