kullanıcı en çıkarılırken ID'nin rememberd Michael HartlÖğretici || veritabanından
Açıklama tarafından Raylar Eğitimi takip ediyorum: Şu anda yüz kullanıcı veri tabanında. Daha fazla 50 hesap oluşturuyorum, kullanıcı kimliğinin 101 - 150 değerini aldım. Sonra yönetici onları yok etti. Daha sonra başka bir hesap oluşturduğumda, kullanıcı kimliği 101'i almalıdır çünkü 101-150 kullanıcıları artık orada değildir. Ama bu 151 alır, bu yüzden kullanıcı kimliğim 100'den 151'e sıçramaz.
Bunun nedeni nedir? Hesapları yok ederek yanlış bir şeyler mi var? dosya ve konsol çıkışı aşağıda:
görünüm:
(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>
kontrolör:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end
konsol çıkış silme kullanıcı zaman:
Started DELETE "https://stackoverflow.com/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
İmhalarınızın çalıştığından emin misiniz? – Albin
Kimlikler benzersizdir ... bu yüzden bir kez atandıktan sonra veritabanını bırakıp tamamen baştan başlamadığınız sürece bu kullanıcı kimliğinde yeni bir kullanıcı olmayacaktır. – toddmetheny
** “Daha sonra başka bir hesap oluşturduğumda, kullanıcı kimliği 101 almalı ...” ** —bu yanlış. Neden sence _should_? Olmamalıdır. Bazı db motorlarında verimlilik uğruna, ids, tam olmayan ve hatta sıralanmamış ve sıralanmamış olabilir. 'Id' alanının nasıl kurulduğuna dikkat etmemelisiniz: bununla ilgilenmek bir db motor görevidir. – mudasobwa