如果创建了5条User
记录,则将其全部销毁。数据库中创建的下一个User
条目的id
为6。rails如何知道给这一新行一个6
的id
而不是1
?我遇到这个问题是因为我试图"猜测"User
记录的下一个id是什么,但在上面的场景中遇到了麻烦。我目前正在使用postgresql,但我不认为这个功能会依赖于数据库?谢谢大家!
这是依赖于数据库的。插入时,大多数数据库都会返回插入行的id。在PostgreSQL中,您有一个所谓的"序列",它保持当前/下一个id号(不确定是哪个)。其他数据库可能有所不同。
请参阅:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L726
这是它查找当前序列的位置:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L1513