2011-12-15 5 views
0

SQL ServerとRailsに問題があります。Rails Model.save get datetime convertion error: "Dados varchar emum tipo de dados ..."

RailsとSQL Serverの異なる方法で日付形式を保存しているようだ:

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

私はポルトガル語(ブラジル)でSQL Serverを実行しているように、私の問題は、唯一のブラジル人のために存在している場合があります。私はRailsの上の任意のModel.saveを行うたび

、私はこのエラーを取得しています:

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の列を更新/挿入し、私はいつもこのエラーを取得します。

誰もこれを解決する方法を知っていますか?

私はactiverecord-jdbcmssql-adapterでjRubyを実行しています。

答えて

3

それは死んでいる単純な...あなたが望む名前でconfig/initializerの下にファイルを作成するだけで、私はdatetime_format.rbを使用します。この行の場合:

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

これは、DBのデフォルトの日時フォーマットを上書きします。

0

ちょうど解決策を見つけた:

私はRailsののlib /フォルダ内の "sqlserver_dateformat.rb" という名前のファイルを作成し、これを追加しました:everymodelに

class ActiveRecord::Base 
    before_save :set_sqlserver_dateformat 

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

を、私はそれを必要としました:

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

私は知られている、それは猿のパッチですが、ちょっと、それは動作します! =]