2011-12-15 1 views
0

SQL Server 및 Rails에 문제가 있습니다.Rails Model.save datetime 변환 오류가 발생합니다 : "파일과 폴더의 내용이 서로 다를 수 있습니다 ..."

레일 및 SQL 서버는 다른 방법으로 날짜 형식을 저장하는 것 같다

Rails way: 2011-12-15 
SQL Server: 15-12-2011 

내가 포르투갈어 (브라질)에서 SQL Server를 실행하는거야으로 그렇게 내 문제는 브라질 사람들 만있을 수 있습니다.

A conversão de um tipo de dados varchar em um tipo de dados 
datetime resultou em um valor datetime fora do intervalo.: <my query here> 

으로 레일/삽입 created_at를 업데이트하고 updated_at 컬럼, 난 항상이 오류가 발생합니다 :

내가 레일에 어떤 Model.save을 할 때마다

, 나는이 오류를 받고 있어요.

누구든지 해결 방법을 알고 있습니까?

activerecord-jdbcmssql-adapter에서 jRuby를 실행 중입니다.

답변

3

그것은 죽었어 ... 단지 당신이 원하는 이름으로 config/initializer 밑에 파일을 만들면, 나는 datetime_format.rb를 사용한다. 이 줄을 사용하면 :

Time::DATE_FORMATS[:db]= '%d-%m-%Y %H:%M:%S' 

이렇게하면 DB의 기본 datetime 형식을 덮어 씁니다.

0

그냥 해결책을 발견 :

내가 레일 'lib 디렉토리/폴더에 "sqlserver_dateformat.rb"라는 이름의 파일을 제작 한이 추가 :

class ActiveRecord::Base 
    before_save :set_sqlserver_dateformat 

    def set_sqlserver_dateformat 
    ActiveRecord::Base.connection.exec_query("set DATEFORMAT ymd") 
    end 
end 

이제 everymodel에 내가 필요한 것을 :

require 'sqlserver_dateformat' 
class User < ActiveRecord::Base 
    # ... 
end 

나는 원숭이 패치이지만, 작동합니다. =]

관련 문제