2013-04-10 1 views
0

아래의 루비 스크립트에서 활성 레코드와 함께 사용하는 모델이 있습니다. level_type, name, parent.id 및 pipcode와 같은 것들은 모델의 속성에 할당되어 레벨 테이블에 입력됩니다. 내 질문은 새로운 기록에 대해서만 작동합니까? 이름, parent.id 및 pipcode가 자주 변경됩니다. 나는이 가치가 바뀔 때마다 새로운 기록을 만들어 내기를 원하지 않는다.ActiveRecord의 model_name.new()는 새로운 레코드 만 생성하거나 기존 레코드도 업데이트합니다.

  new_region = Level.new(
      :level => level_type, 
      :name => name, 
      :parent_id => parent.id, 
      :make_code => pipcode 
     ) 

답변

1

Level.new (...) 일반적으로 사용되는 : 나는

내 기록을 생성 코드는 ..이 새 값이 parent.id 등 pipcode에서 들어오는 기존 레코드를 업데이트하고 싶습니다 업데이트 할 경우 전화 할 때) (

을 new_region.save을 새 행을 만들려면 먼저 같은 것을 호출하여 업데이트 할 행을 찾을 필요가 :이 시점에서

# if patient_id is the primary key 
existing_region = Level.find(patient_id) 

을, 와이 ou는 existing_region의 매개 변수를 업데이트하고 .save()를 호출하여 데이터베이스를 업데이트 할 수 있습니다.

existing_region.level = level_type 
existing_region.name = name 
... 
existing_region.save() 
관련 문제