0

そのような本を介して:

Rails を使用したアジャイル Web 開発

アプリケーションのショッピング カートを作成しています。そのようなコードがあります:

class Cart < ActiveRecord::Base
    attr_accessible :id
    has_many :line_items, dependent: :destroy

  def add_article(article_id)
    current_item = line_items.find_by_ART_ID(article_id)
      if current_item
      current_item.quantity += 1
      else
      current_item = line_items.build(ART_ID: article_id)
      end
    current_item
  end
  def total_price
    line_items.to_a.sum { |item| item.total_price(item.ART_ID) }
  end
  def total_count
    line_items.to_a.sum { |item| item.quantity }
  end

end

Rails 3.0.9での以前のプロジェクトではすべて問題ありませんでしたが、今では

nil をデータベースの Fixnum に強制することはできません。数量は null です

このようにコードを変更すると

current_item = line_items.find_by_ART_ID(article_id)
          if current_item
          current_item.quantity = 1
          else
          current_item = line_items.build(ART_ID: article_id)
          current_item.quntity = 1
          end
        current_item

すべてが良いですが、何が問題なのですか?rails 3.2.6 と ruby​​ 1.9.3 が私の += 割り当てを理解しないのはなぜですか?

4

1 に答える 1

1

+= の問題ではありません。問題は、コードでこれを実行しようとしていることです。

nil + 1

数量は初めてゼロです。

于 2012-08-13T13:04:42.913 に答える