Rails 3 - имена столбцов (устаревшая база данных)

Возможный дубликат:
Псевдоним для имен столбцов в Rails

Я пишу модуль моделей ActiveRecord для доступа к устаревшей базе данных MySQL. Моя проблема заключается в том, что база данных имеет соглашение об именовании столбцов, которое выглядит следующим образом: groupID, metaGroupName, flagName, Есть ли простой способ заставить модели играть хорошо с этим соглашением об именах?

Обновление: я хотел бы избежать alias_attribute метод, если это возможно. Это не маленькая база данных, и это будет много столбцов для псевдонима. Есть ли в ActiveRecord метод, который интерпретирует имена столбцов, которые я могу переопределить, возможно?

2 ответа

Вы не хотите повторяться - это хорошо. К счастью, Ruby делает это довольно легко. Попробуйте что-то вроде следующего:

class Model < ActiveRecord::Base

  column_names.each do |cn|
    alias_attribute cn.underscore.intern, cn
  end

end

Я бы тогда учел это в Module может быть так:

module AliasLegacyColumns
  extend ActiveSupport::Concern

  included do
    column_names.each {|cn|
      alias_attribute cn.underscore.intern, cn
    }
  end

end

Тогда просто включите это в свои модели по мере необходимости. Для дальнейшего уточнения я бы предоставил alias_columns метод уровня класса, который принимает параметры, такие как :include или же :exclude так что вы можете обезьяна-патч ActiveRecord::Base с указанным модулем, но только вызов alias_columns по мере необходимости для модели.

Просто добавьте следующее к вашей модели

alias_attribute :new_column_name, :myLegacyColumnName
Другие вопросы по тегам