2011-08-23 54 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 >