2012-11-01 92 views
2

我是RoR的新手,試圖做「實用的敏捷Web開發」軟件倉庫應用程序。 應用程序需要跟蹤買方添加到購物車的所有物品。Rails:Card.id沒有任何價值

這裏是車模型的建立:

rails generate scaffold cart 

這是應用控制器代碼:

class ApplicationController < ActionController::Base 

protect_from_forgery 

private 
    def current_cart 
    Cart.find(session[:cart_id]) 
    rescue ActiveRecord::RecordNotFound 
    cart = Cart.create 
    session[:cart_id] = cart.id 
    cart 
    end 
end 

我的問題:

  1. 在 「腳手架」 命令我沒有爲此表指定任何列名稱,但Cart仍然有一列叫做「id」。 scaffold命令是否自動生成「id」列?
  2. 在此救援塊中,將創建一個新的Cart對象,但不將值設置爲「Card.id」。在下一行,我們將這個「id」值賦給「session [:cart_id] = cart.id」。什麼是將被存儲的價值?

你的答案可以理解的,

感謝

答案1

回答

2

id是由腳手架生成器自動生成自動增量的ID列。每次創建新條目時,都會生成一個新的ID。

2的答案:是的,除非它可以通過已存儲的cart_id在會話中找到一個新對象,否則將創建一個新對象。因此,在創建新購物車之後,它會將新的cart_id保存在會話中供將來使用。如同下次請求時控制器再次調用current_cart函數,它將從session和相應的Cart對象獲得有效的cart_id

如果您沒有真正意識到session或ROR中的會話處理方式,那麼您可以按照這些鏈接進行操作。會話的

讓我知道任何事情都讓人困惑。

相關問題