2013-08-01 4 views
0

gmaps4rails가 개발중인 앱이 있습니다. 지난 주에 MySQL DB를 사용하여 프로덕션에 업로드했습니다. 모두 멋진 일이지만, 주소를 검색, 일부 위도 및 위도 값을 편집하려고 및 일부 위치를 편집하려고 할 때 숫자가 반올림 나타나는 참조하십시오.gmaps4rails MySQL에서 부동 소수점 올림 수

나는 float 값에서 높이 또는 정밀도와 같은 것을 할 수 있는지 알고 싶습니까? 또는 gmaps4rails를 사용하여이 두 필드에서 십진수로 작업 할 수 있습니까? 그리고 내가 어떻게 float 값을 십진수 값으로 옮길 수 있습니까?

감사합니다.

+0

당신은 잘못된 열 유형 (INT 대신 소수)를 가질 수 필요에 따라 precisionscale을 테이블 이름으로 my_table을 교체하고 조정합니다. 레일즈 콘솔에서 이것을 실행하고 질문에 출력을 붙여 넣으십시오 :'Map.columns.map {| col | "# {col.name}은 # {col.sql_type}"}'(해당 모델 이름으로'Map'을 대체하십시오) – Benj

+0

@BenjaminSinclaire는 다음과 같습니다 : [ "id is INTEGER", "category_id is integer", "name is is varchar (255) ","varchar (255) ","email is varchar (255) ","varchar (255) ","varchar "비전은 텍스트", "created_at는 datetime", "updated_at는 datetime", "city_id는 정수", "latitude is float", "varchar (255)", "about은 텍스트" 경도 is float ","gmaps is boolean "] – Stanmx

답변

1

DB 파일은 float 형식이므로 gmaps4rails와 함께 작동하려면 MySQL에서 십진수 여야합니다. 필드를 수정하기 위해 마이그레이션을 수행해야합니다.

매우 중요 : 보호해야하는 데이터가있는 경우 마이그레이션을 실행하기 전에 전체 데이터베이스 덤프를 수행해야합니다.이 작업에 아무런 위험이 없음을 보장 할 수 없습니다. . DB 서버 덤프 외에 prod 서버에 상황이 있기 때문에 prod DB를 dev 컴퓨터로 가져 와서 여기에서 마이그레이션을 테스트 할 것을 권장합니다.

레일 마이그레이션은 다음과 같아야합니다

change_column :my_table, :latitude, :decimal, precision: 10, scale: 8 
change_column :my_table, :longitude, :decimal, precision: 11, scale: 8 

+0

새로운 유형을 적용하지만 지금 당장 유일한 문제는 경도 변환 숫자 유형입니다 : -116.988449 to -99.99999999. 이것에 대한 해결책은 무엇입니까? – Stanmx

+1

제 사과, 정답이 내 대답에 잘못되었습니다, 제가 편집했습니다 – Benj

+0

시간 내 주셔서 감사합니다. 훌륭하게 작동합니다. – Stanmx