2011-08-23 51 views
0

的Rails 3.0.9 紅寶石1.9.2p180 的MySQL 5.5Rails3中的ActiveRecord:在AUTO_INCREMENT場零ID下面創建/保存在MySQL表,其中主鍵= ID與AUTO_INCREMENT

我創建條目。 記錄創建是通過調用來完成,以

mc_object = ModelClass.create(... PRAM名單不包括ID)

返回mc_object包含一個id =零,而DB記錄包含值的正確分配 ID 。使用ModelClass.new(...)後跟ModelClass.save(甚至保存!)產生相同的 結果。

我不認爲這是正確的行爲。

如果我從數據庫中重新查詢記錄,我會在返回的對象中看到正確的ID。

這是ActiveRecord中的一個錯誤嗎?

回答

0

在將對象保存到數據庫時創建Id。如果您使用ModelClass.new(...),您將始終獲得id = nil,但是如果您使用ModelClass.create(...),則必須獲取id的值。 下面的例子有一個card_id字段爲auto inc的卡片對象。

irb(main):020:0> c = Card.create(:name =>"Sample Card") 
=> #<Card name: "Sample Card", card_id: 65 > 

irb(main):021:0> c = Card.new(:name =>"Sample Card") 
=> #<Card name: "Sample Card", card_id: nil >