2010-04-25 2 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의 가치가 있습니다! 고마워, 너는 내 하루를 구했다 :) –

+13

이것은 실제로 매우 잘못된 접근법이다. 이 일련의 작업은 원자 적이지 않습니다. 병렬 요청을 할 수 있으며 잘못된 ID가 표시 될 수 있습니다. 또한 마지막으로 명령을 quarantee하지 않습니다 (최소한 Rails 3에서는 아님). Create는 저장이 성공하면 ID가있는 유효한 레코드를 리턴합니다. 그냥 @ record.id. – mdrozdziel

+0

예 @ acidburn2k 네가 맞아 내가하는 평범한 요청에 동의한다. 네가 추측하고있는 특정 기록을받을 아이디에 대해 잘 모르겠다. –

0

새 레코드를 만들기 전에 모든 필수 열의 값을 제공하고 있는지 확인하십시오. @ record.save가 true를 반환하면 레코드가 성공적으로 저장되었음을 의미합니다. @ record.id를 사용하여 ID를 얻으십시오.

관련 문제