你好!
当我在Rails 3.1中保存模型时,这是一件很奇怪的事情
开发/生产中的同一项目
有一个简单的模型City有2个字段(名称/州)。
开发控制台
city = City.new(:name => "Sao Paulo", :uf => "SP")
city.save (true, no validations errors and record is created in database)
如果我叫“ city.id”,我将获得保存在数据库中的ID的真实值,例如123.It在开发中工作正常。
生产控制台
city = City.new(:name => "Sao Paulo", :uf => "SP")
city.save (true, no validations errors and record is created in database)
如果我调用“ city.id”,则得到的值等于0(不同于在数据库中自动创建的值)
City.last (check if record is created in database...)
<City id: 22257, name: "Sao Paulo", uf: "SP", created_at: "2011-11-23 00:52:53", updated_at: "2011-11-23 00:52:53">
记录是在数据库中创建的,但在调用保存/创建后不会返回ID。有人看过吗?这是我第一次在生产中看到这种行为。它发生在项目中的每个模型上。我使用模型城市是因为它是最简单的模型。
我正在运行rails 3.1。
感谢帮助!
最佳答案
city.id = 0
不会对您的数据库执行任何操作,只会修改您拥有City
的实例,以将其实际写入数据库,您应该在更改其属性后在实例上使用.save
。
同样,手动设置自动递增的唯一sql列的值似乎也要求发生不好的事情。
我也认为id以1而不是0开头,试图将其设置为0可能不会被MySQL接受。