2012-03-14 81 views
0
p = People.first 
#p { :id => 1} 
p.destroy 

s = People.new 
#s {:id => 2} 
s = p.id 
# s.id => 1 
s.save 

#real output: UPDATE peoples set updated_at ='2012.....' WHERE people.id = 2 
#expect output : UPDATE peoples set updated_at ='2012.....' WHERE people.id = 2 

我想在我銷燬一些id後重新激活activerecord id。它可以嗎?我可以在我銷燬後重新使用activerecord ID嗎?

回答

1

是的,這是可能的。但要小心,舊的鏈接的人的個人資料給其他個人資料可能途徑(老人用id 5被刪除,新的人將與5)

Peson.create(:id => 5) 
+0

的ActiveRecord通常不允許':在大規模的分配使用id',所以你可能需要展開成'p = Person.new; p.id = 5; p.save' – 2012-03-14 10:16:38

0

是的,你可以使用它,你上面的代碼示例中,

s = p.id應該s.id = p.id

+0

因此,當's = pid'和結果:'#s.id => 1'時會發生什麼?不明白.. – 2012-03-14 14:40:39

+0

's'只是一個參考,當你做's = p.id'時,'p.id'的值將被分配給's'。如果'p.id'的計算結果爲2,則將整數2分配給變量s。 – nkm 2012-03-14 17:31:19

+0

是的,但當'p.id'(它是1)的值賦給's'時。爲什麼irb仍然返回'#s.id => 1'?謝謝。 – 2012-03-14 17:54:15

相關問題