我正在关注Michael Hartl的Rails教程
说明:目前数据库中有一百个用户。我创建了50个帐户,他们获得了用户ID 101 - 150.然后管理员销毁它们。当我然后创建另一个帐户时,它应该获得用户ID 101,因为用户101 -150不再存在。但它得到151,所以我的用户ID从100跳到151,中间没有任何东西。
是什么原因引起的?破坏账户有什么不对吗?在文件和控制台输出下面:
观点:
(app/views/_user.html.erb)
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to "delete", user, method: :delete,
data: { confirm: "You sure?" } %>
<% end %>
</li>
控制器:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end
删除用户时的控制台输出:
Started DELETE "/users/102" for $IP at 2016-03-30 12:11:52 +0000
Processing by UsersController#destroy as HTML
Parameters: {"authenticity_token"=>"Kj+2TnvVk8jVrZi1leVeQRAjJbZsKqXAhA1cjK/WNDa4TieY54NdD6OCATNANFR0lh1trhi+ZzvMLhnirZnw+g==", "id"=>"102"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 102]]
(0.1ms) begin transaction
SQL (0.3ms) DELETE FROM "users" WHERE "users"."id" = ? [["id", 102]]
(10.7ms) commit transaction
答案 0 :(得分:0)
表id列是自动递增。对于mysql,请参阅doc。即使删除了记录,也不会再次使用自动增量字段,除非您删除数据库或在其上调用Alter表。
为什么要这样做是有充分理由的,因此不会错误地分配孤立关系,这可能会导致数据不一致。