私はここでこれを動作させようとしています。 私は製品のデータベースを持つ店を持っています。 私が与えたことは、3つの列と500以上のエントリ、ts_code cost_priceとsell_priceを持つCSVファイルです。Rails 4レコードを更新するレーキタスク。 ts_codeで見つけてCSVで更新
私は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
また、私は更新するように何列にそれを伝える必要があります知っているが、私は、コスト& sell_priceのようにそれらをどこに置くかわかりません。 誰かがそれが偉大になるのを助けることができたら。
まだこの作業を何とかしようとすると、次に試したのはこれでしたが、エラーは定義されていないメソッド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
ブライアンは今働いていて、ありがとう! – shaneklive