我正在尝试确定Rails是否具有每个数据库条目的内置主键ID,或者在运行rails generate
时是否必须明确定义id:integer
等ID。到目前为止,我已经遇到了很多帖子,询问如何更改主键行为或如何创建多列索引,但没有说明Rails默认情况下如何处理主键,实际上它确实如此。
如果只是在运行id:integer
时使用rails generate
,是否还需要其他任何方法来确保将列用作主键?我已经看到:primary => true
提到但很少解释为什么它包含在任何特定的例子中。通常它是处理上述多列索引的解释的一部分。
答案 0 :(得分:5)
您do not
需要在迁移中明确定义列id
,因为Rails会处理这个问题。对于您创建的每个表,Rails都会创建一个id:integer列作为主键。 Rails不会在migration file
或schema.rb
中显示,但您可以转到rails dbconsole
并检查架构。