Rails3 ActiveRecord:创建/保存后的auto_increment字段上的nil id

时间:2011-08-23 15:34:32

标签: mysql ruby-on-rails-3 activerecord

Rails 3.0.9 Ruby 1.9.2p180 mysql 5.5

我正在mysql表中创建条目,其中主键= id,带有auto_increment。 通过调用

完成记录创建

mc_object = ModelClass.create(... pram list excl id)

返回的mc_object包含id = nil,而DB记录包含正确分配的内容 id值。使用ModelClass.new(...)后跟ModelClass.save(甚至保存!)会产生相同的结果 结果

我不相信这是正确的行为。

如果我从数据库中重新查询记录,我会在返回的对象中看到正确的id。

这是ActiveRecord中的错误吗?

1 个答案:

答案 0 :(得分:0)

在将对象保存到DB时创建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 >