为什么Ruby on Rails 3.2.8 - 模型中的第一个元素返回id = 1而不是0?

时间:2012-10-18 22:10:08

标签: ruby-on-rails ruby

我需要处理遗留数据库问题,我注意到Rails总是设置id = 1且不为零的模型的第一个元素。

为什么?

class Car < ActiveRecord::Base
    attr_accessible :name
end

在rails c

> c = Car.new(name: "Subaru")
> c.id
# id = 1

2 个答案:

答案 0 :(得分:2)

这只是在数据库中遵循数十年的惯例。

主要RDBMS从1开始它们的主键,而不是0.

答案 1 :(得分:0)

这些 - 数组元素的索引和记录的id - 是完全不同的概念。

第一个与指针算法有关。由于我们(通常)将数组的第一个元素存储在它的开头,为了解决这个问题,我们需要在数组本身的地址中添加0。 )下一个(第二个)元素将放置在&amp; array + 1大小的元素块,下一个(第三个) - at&amp; array + 2个大小等等。

记录的auto_increment id就是 - 记录的id,它应该比前一个更高(通过某个步长值)。同样,我认为用(一个没有'先前的'存在= 0)而不是一些人为规则来描述它更容易。 0 + 1只是 - 1。