2009-04-24 5 views
1

레일스가 데이터베이스 레코드에서 잘못된 날짜를 반환하고 있습니다. 내 모델 ("대상")를 들어, 내가 스크립트/콘솔을 실행하는 경우 : 내가 2000-01-01 XX "에서"recorded_on "필드 독서 날짜와 내 모든 기록을 얻을레일 및 SQLite3 : 날짜 일치하지 않음

Target.find :all 

을 : XX를 : 더블 엑스".

나는 동일한 데이터베이스를 타고 sqlite3를 콘솔에서 실행하는 경우 : XX : 내가 2009-04-22 XX "에서"recorded_on "필드 독서 날짜와 내 모든 기록을 얻을

SELECT * FROM targets; 

: xx ", 올바른 날짜입니다.

둘 사이의 시간 값이 올바른 것처럼 보이지만 날짜 값만 꺼져 있습니다.

무슨 일 이니?

답변

0

레일과 데이터베이스 간의 신뢰성있는 변환은 수많은 레일 및 데이터베이스 구성에 따라 다릅니다. I had no patience to tackle입니다.

최종 해결책은 시간 값을 데이터베이스에 저장하는 것을 중지하는 것이 었습니다.

Modelname.time_column = Time.now().to_i 

(사실, 난 속성의 세터의 재정에 to_i 비트을하고 게터 :

Time.at(read_attribute(:time_column)) 

그것은 해킹의 과정을 역하지만, 난 : 난의 int를 저장 구성과 개발 기계간에 간단하게 이동하는 것이 얼마나 단순했는지에 만족합니다.

물론 단점은 sql이 쿼리 할 때 구식 int를 제공한다는 것입니다. MySQL은 변환 할 수있는 방법이있을 수 있지만 SQLite가 될지는 의문입니다.

+0

아, 알겠습니다. 글쎄,이 솔루션은 꽤 필요하지 않습니다 (비록 내 질문에 대답 않습니다). 나는 방금 PostgreSQL으로 전환했다. 문제 없다! 감사! – neezer