2010-04-25 94 views
1

我正在從控制檯執行此操作,但我想在我的代碼中執行此操作。基本上我正在嘗試向表中添加一條記錄,然後將id返回。如何獲取Ruby on Rails中保存的記錄的ID

>> @record = Physician.create(:pname => "someone2") 
=> #<Physician id: nil, pname: "someone2", pgroup: nil, created_at: nil, updated_at: nil, userid: nil, storeid: nil, licexpdate: nil, address: nil> 
>> @record.save 
=> false 
>> 

回答

8

如果@record.save返回false,該項目沒有保存,它不會有一個ID。使用@record.errors.full_messages來查看出了什麼問題

2

成功保存對象後,可以訪問其ID屬性並獲取所需內容。

-5
@record=Record.create(:name=>'vidur') 
last_record_save_id=Record.last.id 
+0

此答案值得100 + 10!謝謝你,你救了我的一天:) – 2012-12-17 04:54:44

+13

這實際上是非常錯誤的做法。這組操作不是原子的。你可以有並行請求,你可能會得到錯誤的ID。最後也沒有保證順序(至少在Rails 3中沒有)。如果保存成功,創建返回帶有ID的有效記錄。只要得到@ record.id。 – mdrozdziel 2013-02-26 18:45:30

+0

是@ acidburn2k你是對的我同意你的請求,你不是很確定你將會收到的特定記錄的id。 – 2013-02-27 04:22:26

0

在創建新記錄之前,請確保您爲所有必填列提供值。如果@ record.save返回true,表示記錄已成功保存。使用@ record.id獲取ID。