2010-12-06 70 views
0

我讀使用Rails 4日的Editon書敏捷Web的研究與開發,當他提出一個模型,這裏面的方法:那行代碼是做什麼的?

def add_line_items_from_cart(cart) 
    cart.line_items.each do |item| 
     item.cart_id = nil 
     line_items << item 
    end 
    end 

,並接受這樣的解釋:

*對於我們從轉移的每個項目購物車的順序我們需要做兩件事。首先,我們將cart_id設置爲零,以便在我們銷燬購物車時防止物品發生嘔吐。然後我們將該項目本身添加到訂單的line_items集合中。請注意,我們不必對各種外鍵字段做任何特殊處理,例如將行項目行中的order_id列設置爲引用新創建的訂單行。 Rails使用我們添加到Order和LineItem模型中的has_many和belongs_to聲明來爲我們編織。將每個新行項添加到line_items集合中,將密鑰管理職責交給Rails。*

有人可以解釋一下這個簡單的代碼行嗎?line_items < < item能做所有這些事情嗎?

感謝您的關注 西蒙娜

回答

3

有人能解釋這個簡單的代碼line_items << item行怎麼做所有的東西?

該行並不是所有這一切。

這可以更好地閱讀這樣的:

def add_line_items_from_cart(cart) #<-- For each item that we transfer from the cart to the order we need to do two things 
    cart.line_items.each do |item| 
     item.cart_id = nil    #<-- First we set the cart_id to nil in order to prevent the item from going poof when we destroy the cart. 
     line_items << item    #<-- Then we add the item itself to the line_items collection for the order 
    end 
end 

其餘:

我們沒有

通知做什麼特別......等等等等

是關於框架的信息。因此,描述對應於整段代碼,而不僅僅是該行。

+0

奧斯卡,你寫道:是關於什麼框架的信息。因此,描述對應於整段代碼,而不僅僅是該行。你能解釋一下這條線是如何將order_id添加到項目中的嗎? – 2010-12-06 23:24:03

0

line_items是列表,line_items << item添加項目到列表中。 item.cart_id = nil清除了物品的購物車ID,以防與不同的購物車關聯。

2

cart.line_items.each do |item| - >需要從車每line_items和「給他們的名字」項,這樣就可以對其進行更改

item.cart_id = nil - >設置的項目爲零的card_id的

line_items << item - >加上項目本身的line_items集合順序