Расширить ActiveRecord :: Base двумя получателями столбцов - PullRequest
0 голосов
/ 24 марта 2012

Я работаю со старой схемой базы данных, которая определяет эквиваленты Rails 'create_at и updated_at как:

# 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 Ответ

1 голос
/ 24 марта 2012

Вы можете создать модуль и включить его в ActiveRecord :: Base:

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
...