私は、データベースにシードしてカートに割り当てることを試みているデータの束を持つファイルを持っています。私は先に進んでカートを作ったので、単なるカートにすべてを割り当てたいだけです。問題は、実際にcart_idを置くべき場所を特定しようとしていることです。種子は次のようになります。Ruby on Railsで既存のIDをシードファイルに割り当てる方法は?
require 'csv'
csv_text = File.read(Rails.root.join('lib', 'seeds', 'IronGloryInventory.csv'))
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1')
csv.each do |row|
@product = row.to_hash
t = Product.new
t.product_name = row['Product']
t.sku = row['SKU']
t.price = row['Price']
t.year = row['Year']
t.quantity = row['Available'].gsub(/\:|\D/, '')
t.size = row['Available'].gsub(/\:|\d/, '')
t.category = row['Category']
t.description = row['Description']
t.save
puts "#{t.product_name}, #{t.year}, #{t.size}, #{t.category} "
end
私は、T = Product.new下= 1 t.cart_id入れて試してみたと私はNoMethodErrorを取得します。
私はそれをcsv.eachの上に置いてみましたが、product.cart_id = 1で行い、未定義のローカル変数を取得しました。
実際にはIDを割り当てる反復処理が必要なように感じますが、わかりません。
カートにはhas_manyの商品との関連があり、商品にはbelongs_toがあります。どんな方向にも役立ちます。
ご使用の製品モデルにcart_id属性がありますか?スキーマファイルを追加できますか? –
create_table "カート"、力::カスケードdo | t | t.boolean "購入" t.datetime "のcreated_at"、ヌル:偽 t.datetime "updated_atの"、ヌル:偽 t.integer "user_idは" t.integer "guest_id" t.integer "product_idの" t.index [ "guest_id"]、名称: "index_carts_on_guest_id" t.index [ "PRODUCT_ID"]、名称: "index_carts_on_product_id" t.index [ "USER_ID"]、名称: "index_carts_on_user_id" 端 – Jake
CREATE_TABLE "製品 "、力::カスケードdo | t | t.string "PRODUCT_NAME" t.string "SKU" t.integer "価格" t.integer "年" "在庫状況" t.integer "数量" t.string "サイズ" t.boolean t.text "説明" t.integer "のuser_id" t.integerは t.integer "CATEGORY_ID" t.stringを "guest_id" "カテゴリ" t.index [ "CATEGORY_ID"]、名称: "index_products_on_category_id" 「index_products_on_user_id」 end – Jake