как генерировать активные модели записей из базы данных - PullRequest
4 голосов
/ 28 февраля 2011

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

Ответы [ 5 ]

6 голосов
/ 28 февраля 2011

Это не проблема реинжиниринга, а проблема "придерживается ли ваша устаревшая база данных соглашений об активных записях".Большинство из них этого не делают, и, по моему опыту, почти легче выполнить некоторую работу по миграции на конце данных, чтобы привести его в такое состояние, чтобы оно соответствовало этим соглашениям.Rails - это очень самоуверенное программное обеспечение, и чем меньше вы с ним спорите, тем счастливее вы будете.

Мои два цента ...

1 голос
/ 06 мая 2015

RMRE кажется лучшим из двух перечисленных здесь. Вы можете запустить его в своем корне rails после создания специального rare_map.yml, который является просто конфигурацией БД для базы данных, которую вы хотите отсканировать. Это указывается либо в ./config, если вы находитесь под rails, либо в корневом каталоге вашего приложения, если нет.

Одна приятная вещь: для приложений, не относящихся к Rails, он сгенерирует [module] _base.rb, который создаст отдельный ActiveRecord :: Base, и он поместит классы в модуль по вашему выбору и создаст отдельный ActiveRecord :: Base за каждый.

Модели, сгенерированные RMRE, автоматически заполняют для вас все отношения (own_to, has_many и т.д.). Это будет для приложений, не относящихся к рельсам, или, если вы укажете это в своей конфигурации, поместите модели в модуль для вас.

Драгоценный камень rare_map , также упомянутый выше, создал для меня только пустые модели, которые не покупают вам много.

1 голос
/ 01 марта 2011

Извините, я тоже не знаю инструмента.Но создать активную модель записи действительно просто, как показало скудное дело.Кроме того, вам, возможно, придется описать имя таблицы и первичный ключ:

class Artikelgruppe < ActiveRecord::Base
  set_table_name "tblArtGrp"
  set_primary_key "ArtGrpID"
end

Поскольку мое приложение Rails использует только небольшое подмножество нашей устаревшей базы данных, я предпочитаю создавать представления, специфичные для потребностей моего приложения,база данных.У меня действительно есть проблемы с описанием объединения, например, 7 моделей в Rails, но действительно легко создать представление для объединения 7 таблиц в базе данных.

Почему люди из Rails по-прежнему считают, что они являются центромвселенная?У меня есть дюжина заявок, написанных на разных языках, и общая база - это база данных.Представьте, что мне нужно изменить базу данных, чтобы сделать Rails счастливым ...

0 голосов
/ 12 декабря 2011

Взгляните на RMRE драгоценный камень.Вот вводная запись в блоге , написанная автором RMRE.

0 голосов
/ 28 февраля 2011

ActiveRecord сделает это за вас.На самом деле вам не нужно указывать столбцы в ваших моделях.Предполагая полную таблицу users, просто поместите следующую строку в app/models/user.rb

class User < ActiveRecord::Base

end

. Какую бы дополнительную проверку вы хотите выполнить, впоследствии можно добавить.

При этом вы, вероятно, нене хочу этого делатьRails общеизвестно труден для тех, кто пытается портировать старые проекты, из-за лозунга Rail «соглашение о конфигурации».Это будет тяжелое сражение, если вы попытаетесь согнуть Rails к вашей существующей схеме базы данных.

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