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中的错误吗?
答案 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 >