2012-06-17 3 views
0

레일 프로젝트에서 체크인 저장 중에 위치를 생성/업데이트하려고하는데 문제가 있습니다.레일에서 체크인을 생성하는 동안 위치 생성/업데이트

재치 belongs_to : 위치하는 위치 has_many : 체크 인

내 체크인 모델에서 accepts_nested_attributes_for :location, :allow_destroy => true을 사용하고, 그래서 같은 체크인 만들 때 위치를 만들기 위해 노력하고 있어요 :

POST "checkin[note]=this-is-great&checkin[user_id]=123&checkin[location_attributes][name]=popeyes&checkin[location_attributes][id]=314" to http://localhost:3000/checkins.json 

그러나, 나는이 것을 실행 때마다, 그것은

= ID와 재치에 대한 ID = 314로 위치를 찾을 수 없습니다

,691 말하는 오류가 발생합니다

내가 뭘하고 있는지 잘 모르겠다. ..? 그것이 존재하지 않으면 특정 ID로 Location을 생성하고 location_id에 따라 동일한 위치를 업데이트하고 싶습니다.

위치 테이블은 ID (기본 키)와 이름 체크인 테이블이 성공적으로 작동의 ID (기본 키, 자동 증가)와 주 (VARCHAR)

사람이있다

(VARCHAR)가 accepts_nested_attributes_for?

내가 차 + 자동 증가에 차에서 위치의 ID를 변경하고, 수동으로 설정하려고 중지 : 이것은 문제를 해결하기 위해 무슨 짓을

+0

나는 컬을 통해 작업을 수행하는 방법을 잘 모르겠지만, 문제는 노선과 관련이있을 것으로 보인다 :

내 체크인 모델은 다음과 같습니다. 당신은'show' 액션에서 끝날 것 인'GET' 요청을 보내고 있고, 당신은 생성/업데이트 액션에 도달하기 위해'POST' 요청이 필요합니다. – Anil

+0

글쎄, 그건 내 요청의 단순화 된 버전입니다. 더 명백해야 했어, 미안. 어떤 경우 든 POST로 전송하지만 여전히 위치를 만들 수 없습니다. 체크인이 생성됩니다. –

답변

1

. 그것을 저장하려고했던 foursquare_id와 동일하게 만드는 대신, 나는 foursquare_id를 (다른 열에) 따로 저장하기로 결정했다.

belongs_to :location, :autosave => true 
    accepts_nested_attributes_for :location, :allow_destroy => true 

def autosave_associated_records_for_location 
    if Location.find_by_foursquareID(location.foursquareID) 
     self.location = Location.find_by_foursquareID(location.foursquareID) 
    else 
     self.location.save! 
     self.location = self.location 
    end 
    end 
관련 문제