生产模式下的Rails 3.1将模型保存到数据库但返回id为零

时间:2011-11-23 01:03:40

标签: ruby-on-rails model

您好!
当我在rails 3.1中保存模型时发生了一件非常奇怪的事情。

开发/生产中的相同项目

有一个简单的模型城市有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.
它在发展方面做得很好。

生产控制台

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">

记录在数据库中创建,但在调用save / create后不返回ID。有没有人看过这个?这是我第一次在生产中看到这种行为。它适用于项目中的每个模型。我使用模型城,因为它是最简单的 我正在运行rails 3.1。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

city.id = 0不会对您的数据库执行任何操作,它只会修改您拥有City的实例,以便将其实际写入您的数据库,之后您应该在实例上使用.save改变其属性。

同样手动设置自动增量唯一sql列的值似乎要求发生不好的事情。

另外我认为id从1开始而不是0,试图将它设置为0可能不会被MySQL接受。

答案 1 :(得分:1)

我找到了解决方案!我正在使用'mysql'gem insted'mysql2'。当我改为mysql2(在Gemfile和database.yml适配器中)时,一切正常。这可能是gem'mysql'和rails 3.1之间的不兼容问题。谢谢大家的帮助!