敏捷Web开发line_item创建

时间:2012-08-07 21:00:03

标签: ruby-on-rails-3

我正在阅读Agile Web Development with Rails教程。有产品,LineItems和Carts。

产品

class Product < ActiveRecord::Base
  attr_accessible :description, :image_url, :price, :title
  has_many :line_items
end

的LineItem

class LineItem < ActiveRecord::Base
  attr_accessible :cart_id, :product_id, :product
  belongs_to :product
  belongs_to :cart
end

class Cart < ActiveRecord::Base
  has_many :line_items, dependent: :destroy
end

LineItemsController

class LineItemsController < ApplicationController

  def create
    @cart = current_cart
    product = Product.find(params[:product_id])
    @line_item = @cart.line_items.build(product: product)
    ....
  end

我的问题是关于上面创建操作的第3行。我理解将product_id传递给line_items.build(),但我不明白传递整个产品的是什么?

感谢, 麦克

1 个答案:

答案 0 :(得分:0)

这将设置与产品的关系(如在belongs_to产品中)

您也可以手动设置product_id,但为什么会这样。这样简单得多。

活动记录理解关系的概念 - 因此它会自动为您设置ID。