2012-03-24 21 views
0

とベースは私はレールのcreated_atとupdated_atの当量を規定するレガシー・データベース・スキーマに働いている:これらの列は、ほぼすべての20かそこらのために存在するはActiveRecordのを拡張:: 2つのカラムゲッター

# MySQL 
createDate MEDIUMTEXT 
modifiedDate MEDIUMTEXT 

データベース内のテーブルには、と私はすべてのモデルは、これらの2つの方法を取得するように

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

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

にはどうすればいいのActiveRecord ::ベースを「拡張」することができ、すでにそのためのゲッターコードを書いていますか?

答えて

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

感謝。どのファイルにこのファイルを挿入することをお勧めしますか?イニシャライザは私の最初の推測です。 –

+0

実際には、これはエラーを発生させました:createDateはActiveRecord(ActiveRecord :: DangerousAttributeError)によって定義されています。 –

+0

実行しているレールのバージョンは? – lest

関連する問題