2012-03-14 1 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' –

0

はい、あなたは、あなたの上記のサンプルコードでは、

をそれを使用することができて

s = p.ids.id = p.id

+0

's = pid'と'#s.id => 1'のときはどうなりますか? ..理解できません。 –

+0

's'は参考にすぎません。' s = p.id'を実行すると 'p.id'の値が' s'に割り当てられます。 'p.id'が2と評価されると、整数2が変数sに代入されます。 – nkm

+0

yesですが、 'p.id'の値(1)が' s'に割り当てられています。なぜirbはまだ '#s.id => 1'を返すのですか?ありがとう。 –

関連する問題