Данные Ruby, ActiveRecord и Legacy, которые необходимо преобразовать из char в integer на лету - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть устаревшая база данных, в которой хранятся целочисленные данные в виде символов, которые я хотел бы рассматривать как числовые. Есть ли быстрый и простой способ конвертировать это одно место? Значения находятся в диапазоне от 0 до 5 и по умолчанию равны 0, поэтому нулевые значения отсутствуют.

Я не могу просто исправить данные, потому что устаревшая база данных все еще будет обновляться устаревшим приложением.

Так что я в основном задаюсь вопросом, есть ли какая-нибудь опция activerecord, которая могла бы автоматически привести столбец.

Ответы [ 2 ]

3 голосов
/ 17 декабря 2009

Вы можете переопределить имя столбца с помощью метода, который преобразует символ в целое число

, например

def my_col
   read_attribute(:my_col).to_i
end

Тогда все должно работать без проблем

1 голос
/ 17 декабря 2009

В есть раздел ActiveRecord :: Base docs , называемый " Перезапись доступа по умолчанию ", в котором говорится только об этом сценарии:

Все значения столбцов автоматически доступны через базовые методы доступа к объекту Active Record, но иногда вы хотите специализировать это поведение. Это можно сделать, переписав методы доступа по умолчанию (используя то же имя, что и у атрибута) и вызвав read_attribute(attr_name) и write_attribute(attr_name, value), чтобы реально изменить ситуацию.

Также упоминается альтернативный синтаксис хеш-стиля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...