2013-02-22 4 views
1

저는 데이터베이스에 주소 테이블을 가지고 있으며 지오 코더 젬 (sweet gem)을 발견했습니다. 어쨌든 위도와 경도 열을 모두 포함하도록 모델을 편집하고 각 레코드가 geocoded_by 인 것으로 지정 했으므로 지금은 현재 테이블에있는 모든 주소를 지오 코딩해야합니다. 위도와 경도. 이후 그러나 개별 요소의 검사에, 이것은 위도와 경도 열에 채워진 각 항목을 반환지오 코더는 레일스 콘솔이있는 데이터베이스의 레코드에 지오 코드를 적용합니다.

Address.all.each{ |address| address.geocode } 

:

은 내가 단순히 명령을 실행하여, 레일 콘솔을 파악했다고 생각 - 그들은 여전히 ​​위도와 경도가 없습니다 (즉, 레코드가 실제로 업데이트되지 않습니다). 아마도 address.geocode! 일할 것이라고 생각했지만 그게 NoMethodError을 반환했습니다.

이것은 간단한 하나가 될 가지고 있지만, 나는 그것이 무엇인지 충분히 단지 경험이있어 보인다 ... 나는 그것을 알아 냈 좀 더 땜질와 aaaand :

솔루션을

Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) } 

답변

5

는 간단히 실제로 데이터베이스에 레코드를 변경하지 않습니다

Address.all.each{ |address| address.geocode } 

을 수행.

해결하는update_attributes를 사용하는 데 필요한

:

Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) } 

이이 지오 코더에 포함 밖으로 빨리 해결 될 수 있지만이 문제에 대한 빠른 해결책이었다 할 수있다, 그것은 다른 사람을 도움이되기를 바랍니다!