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