2011-12-19 62 views
1

我有一個歌曲模型,其中包含成千上萬的歌曲,當我用AR查詢時間格式(當呈現給json時)是這樣的:2011-12-19T11:04: 39Z。Rails:created_at返回不同的格式

當我執行使用Song.connection.execute()渲染成JSON格式時,返回的時間的查詢是這樣的:2011-11-20 19:00:08.207467

其實我更喜歡它從connection.execute()調用返回的原始格式。我怎樣才能讓AR始終如一地不轉換它?我將如何設置正確的時區等?

我基本上想要確保它始終以相同的格式通過原始數據庫調用和通過AR請求。

回答

1

我會走另一條路:我寧願AR轉換格式給/免費給你。原因在於配置格式會更容易(爲此,請參閱例如to_formatted_s)。

爲了達到這個目的,你必須避免使用connection.execute,而是總是使用YourModel.find_by_sql--你將得到一個YourModel實例數組,並且所有的屬性都被正確轉換。欲瞭解更多信息,請參閱文檔:ri find_by_sql

0

這種差異很可能是由於ActiveRecord會創建一個Ruby DateTime,而execute會直接從SQL引擎給你一個純粹的字符串答案。因此,一個是來自Rails的默認格式,另一個是來自數據庫的默認格式。

Thisthis可能是相關的。

1

編輯您的區域文件,並設置日期和時間格式如你所願

en: 
    date: 
    formats: 
     default: "%Y-%m-%d %H:%M:%S.%Z" 
     short: "%d %b" 
     long: "%d %B %Y" 

的語法是,strftime

相關問題