我需要处理遗留数据库问题,我注意到Rails总是设置id = 1且不为零的模型的第一个元素。
为什么?
class Car < ActiveRecord::Base
attr_accessible :name
end
在rails c
> c = Car.new(name: "Subaru")
> c.id
# id = 1
答案 0 :(得分:2)
这只是在数据库中遵循数十年的惯例。
主要RDBMS从1开始它们的主键,而不是0.
答案 1 :(得分:0)
这些 - 数组元素的索引和记录的id - 是完全不同的概念。
第一个与指针算法有关。由于我们(通常)将数组的第一个元素存储在它的开头,为了解决这个问题,我们需要在数组本身的地址中添加0。 )下一个(第二个)元素将放置在&amp; array + 1大小的元素块,下一个(第三个) - at&amp; array + 2个大小等等。
记录的auto_increment id就是 - 记录的id,它应该比前一个更高(通过某个步长值)。同样,我认为用(一个没有'先前的'存在= 0)而不是一些人为规则来描述它更容易。 0 + 1只是 - 1。