所以我需要一个可以运行的任务,找到与ts_code匹配的所有产品,然后更新这些产品的cost_price和sell_price。
我已尝试编辑我用于导入产品的任务,如下所示。
原始任务
require 'csv'
desc "Imports a CSV file into an ActiveRecord table"
task :import, [:filename] => :environment do
CSV.foreach('csv/vow.csv', :headers => true) do |row|
Spree::Product.create!(row.to_hash)
end
end
我希望这样的事情可行,但我现在已经陷入困境。
require 'csv'
desc "Imports a CSV file into an ActiveRecord table"
task :update, [:filename] => :environment do
CSV.foreach('csv/vow.csv', :headers => true) do |row|
a = Spree::Product.find_by(:ts_code)
Spree::Product.update_all!(a, row.to_hash)
end
end
我也知道我需要告诉它要更新哪些列,但我不确定将它们放在哪里如cost&出售价格。 如果有人能提供帮助那就太棒了。
仍然试图以某种方式让这个工作,我尝试的下一件事是这个,但得到一个错误未定义的方法find_by。语法错误,不知道我有多接近。
require 'csv'
desc "Imports a CSV file into an ActiveRecord table"
task :update, [:filename] => :environment do
CSV.foreach('csv/recharge_pricing.csv', :headers => true) do |row|
product = find_by(ts_code: row["ts_code"]) || new
parameters = ActionController::Parameters.new(row.to_hash)
product.update(parameters.permit(:cost_price,:price))
product.save!
end
end