2012-05-08 106 views
1

我正在嘗試編寫一個猴子補丁來爲created_at添加一個方法。用於created_at的猴子補丁

我創建了一個date_time_extras.rb文件,並把它放在lib目錄,與內容:

class DateTime 
    def beginning_of_hour 
    change(:min => 0) 
    end 
end 

從控制檯我做的:

record.created_at.beginning_of_hour 

但這種方法得到丟失的錯誤。它看起來像created_at不是日期時間?因爲DateTime.new.beginning_of_hour有效,而record.created_at.class產生ActiveSupport::TimeWithZone

那麼如何爲created_at類型的日期寫一個猴子補丁呢?

我正在使用rails版本3.0.10。

更新

也試過

module ActiveSupport 
    class TimeWithZone 
    def beginning_of_hour 
     change(:min => 0) 
    end 
    end 
end 

無濟於事

+0

Welp ..在此期間它看起來像我可以使用'record.created_at.change(:min => 0)' – CambridgeMike

回答

0

你嘗試宣告它在class Time

class DateTime 
    def beginning_of_hour 
    change(:min => 0) 
    end 
end 

TimeWithZone看起來像它代表了時間對象TimeDateTime

而且TimeWithZone包含的不僅僅是@time對象的更多,所以你將不得不做一些像

module ActiveSupport 
    class TimeWithZone 
    def beginning_of_hour 
     self.time.change(:min => 0) 
    end 
    end 
end 

但我不是100%肯定該代碼。