1

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

这是为什么?

class Car < ActiveRecord::Base
    attr_accessible :name
end

在轨道 c

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

2 回答 2

2

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

主要 RDBMS 的主键从 1 开始,而不是 0。

于 2012-10-18T22:22:11.953 回答
0

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

第一个与指针算法有关。因为我们(通常)将数组的第一个元素存储在它的开头,为了解决它,我们需要将 0 添加到数组本身的地址。) 下一个(第二个)元素将放置在 &array + 1 个元素块的大小处,下一个(第三个) - 在 &array + 2 个大小处,依此类推。

记录的 auto_increment id 就是 - 记录的 id,应该比前一个更高(按某个步长值)。同样,我认为用(不存在“先前的”= 0 时的前一个)来描述这一点比使用一些人为规则更容易。而 0 + 1 就是 - 1。

于 2012-10-18T22:22:27.187 回答