2011-05-01 76 views
6

在我的Rails 3應用程序中,如果實際對模型進行更改,我只想在特定日誌中編寫條目。因此,如果用戶沒有更改任何字段並單擊「提交」,則不應該有日誌條目。在Rails 3模型中,DateTime屬性是非常「髒」的

但似乎無論如何,Rails似乎總是認爲模型的DateTime屬性已更改。

當我調試時,我在更新期間運行以下行,它們都返回true,我認爲這會是一個矛盾。

@request.begin_date == @request.begin_date_was # Returns true 
@request.begin_date_changed? # Returns true 

我想知道是否有事情做與更改默認的日期格式的初始化(爲「%M /%d /%Y」)或可能具有的東西時區。

我很難過,所以任何幫助將不勝感激。

回答

2

您可以更改默認的日期和時間格式在你這樣的en.yml區域設置文件:(這是例如法國格式,我的項目之一)

date: 
formats: 
    default: "%d/%m/%Y" 
    short: "%e %b" 
    long: "%e %B %Y" 
    long_ordinal: "%e %B %Y" 
    only_day: "%e" 
time: 
formats: 
    default: "%d %B %Y %H:%M" 
    time: "%H:%M" 
    short: "%d %b %H:%M" 
    long: "%A %d %B %Y %H:%M:%S %Z" 
    long_ordinal: "%A %d %B %Y %H:%M:%S %Z" 
    only_second: "%S" 
am: 'am' 
pm: 'pm' 

或者你可以簡單地轉換你的日期時間例如:
@ request.begin_date.strftime(「%m /%d /%Y」)== @ request.begin_date_was.strftime(「%m /%d /%Y」) 或甚至:
l (@ request.begin_date,:format => your_format_in_locale_file)== l(@ request.begin_date_was,:format => your_format_in_locale_file)

希望它能幫助你

1

我從谷歌搜索到一個類似的問題。它與Rails版本沒有關係,但經過一些調試後我發現我用毫秒分配了一個Time對象。當撥打changed時,我收回了一組看似相同的對象,因爲它被轉換爲DateTime's。不確定這是否可以被認爲是Rails中的一個錯誤,但是如果你最終遇到了同樣的問題,請檢查你是不是以毫秒爲單位分配datetime。