2012-03-24 44 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