2012-03-14 91 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

相关问题