0

Excelからのインポート機能があります。そして、私はそれを私のモデルに置きました:

def self.import(file, employee_name)
  spreadsheet = open_spreadsheet(file)
  header = spreadsheet.row(1)
  (2..spreadsheet.last_row).each do |i|
    row = Hash[[header, spreadsheet.row(i)].transpose]
    category = Category.where(:name => row["Category"]).last
    if category.blank?
      category = Category.create(:name => row["Category"], :is_active => 1)
    end
    unit = UnitOfMeasure.where(:name => row["Unit"]).last
    if unit.blank?
      unit = UnitOfMeasure.create(:name => row["Unit"], :is_active => 1)
    end

    chart_of_account_id=0
    stock_output_account=0

    if row["Can Sold"]==1
      income_account=1
    else
      income_account=0
    end

    if row["Can Purchased"]==1
      expense_account=1
    else
      expense_account=0
    end

    product = Product.create(:plu => row["PLU"], :plu_night_disc => row["PLU Night Disc."], :name => row["Item Desc."], :min_stock => ["Min. Stock"], :product_type => row["Product Type"], :notes => ["Notes"], :sales_price => ["Sales Price"], :night_disc_price => ["Night Disc. Price"], :bottom_price => ["Bottom Price"], :category_id => category.id, :unit_of_measure_id => unit.id, :chart_of_account_id => chart_of_account_id, :stock_output_account => stock_output_account, :income_account => income_account, :expense_account => expense_account, :can_be_sold => row["Can Sold"], :can_be_purchased => row["Can Purchased"], :employee_name => employee_name, :is_active => 1)

  end
end

しかし、インポートを実行してもエラーは返されませんが、たとえばデータベースに細かく挿入してモデル化するようにProduct変更しようとすると、作成がスキップされました (長いコードを探します) 。私はこの振る舞いを混乱させます。助けてください。ありがとうProductCountry

4

1 に答える 1

0

この動作は、おそらく無効なProductレコードがあり、挿入がサイレントに失敗していることを意味します。create!代わりにメソッドを使用してみてください:

product = Product.create!(...)

モデルが無効な場合、このメソッドはエラーを発生させ、その理由を説明します。その情報を使用して、コードをデバッグできます。

それが役立つことを願っています。

于 2013-03-04T12:05:18.667 に答える