2012-03-24 63 views
0

我與它定義等同於Rails的created_at遺留的數據庫模式工作,爲的updated_at:擴展的ActiveRecord :: Base的兩個干將

# MySQL 
createDate MEDIUMTEXT 
modifiedDate MEDIUMTEXT 

這些列幾乎所有的20個左右的存在數據庫中的表,我已經寫了吸氣代碼它已經,

def createDate 
    DateTime.strptime(read_attribute(:createDate), "%s") 
    end 

    def modifiedDate 
    DateTime.strptime(read_attribute(:createDate), "%s") 
    end 

我如何「擴展」的ActiveRecord :: Base的讓我所有的車型拿到這兩個方法?

回答

1

你可以在ActiveRecord的::基地創建一個模塊,並將其包含:

module LegacyTimestamps 
    def createDate 
    DateTime.strptime(read_attribute(:createDate), "%s") 
    end 

    def modifiedDate 
    DateTime.strptime(read_attribute(:modifiedDate), "%s") 
    end  
end 

ActiveRecord::Base.send :include, LegacyTimestamps 

它也可能包括只在部分機型這樣的模塊:

class User < ActiveRecord::Base 
    include LegacyTimestamps 
end 
+0

感謝。你會建議我把這個文件放在哪個文件中?初始化是我的第一個猜測。 – 2012-03-26 09:34:33

+0

其實這引發一個錯誤:CREATEDATE由ActiveRecord的(ActiveRecord的:: DangerousAttributeError)定義..想法? – 2012-03-26 09:37:32

+0

你正在運行什麼版本的導軌? – lest 2012-03-28 05:47:09