1

私はアプリケーションのためにしばらく取り組んできたシンプルなカートシステムを持っており、結合テーブル(注文と製品の間)の特定の属性を更新する方法を理解するために少し助けが必要です。

コードは次のとおりです。

def add_product_to_cart
        @product = Product.by_client(current_client).first 
        @order = current_order
        unless @order.products.exists? :id => @product.id
            @order.products << @product
        end
    end

更新するときに特定の属性を更新しようとしてい@order.productsます...

これが私がやろうとしていることです: ->これが起こったら、属性@order.products << @productを更新する必要があります。:price

とにかくこれを行う?

4

2 に答える 2

1

結合テーブルに属性を配置したい場合は、モデルが欠落している兆候である可能性があります。OrderItem主キーを追加することで、結合テーブルをモデルに昇格させることができます。HABTM アソシエーションがアソシエーションにOrderなり、アソシエーションにProductなりhas_many throughます。新しいモデルは、属性を設定するコールバックを設定するのに適していpriceます。また、アイテムのタイムスタンプや作成act_as_listなど、追加の特典をアンロックすることもできます。

于 2012-08-23T18:58:37.443 に答える
1
class Order
  has_many :products
  def price
    products.sum(:price)
  end
end

頭のてっぺんから。合計参照は次のとおりです。

http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html#M000296

于 2012-08-23T18:01:07.563 に答える