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