Как импортировать схему SQL в Rails - PullRequest
0 голосов
/ 02 июня 2009

Скажем, например, у меня есть готовая к работе схема SQL. Как мне импортировать его в мое приложение на Rails, чтобы использовать подготовленную базу данных вместо всех этих забавных миграций.

РЕДАКТИРОВАТЬ: Вы все неправильно поняли мой вопрос до сих пор. Я спрашиваю, было ли у меня работающее приложение базы данных, скажем, PostgresQL. Как бы я использовал это в качестве основы моего приложения на Rails?

Ответы [ 5 ]

2 голосов
/ 02 июня 2009

Нет требования, чтобы вы использовали миграции, «смешные» или иным образом. Просто начните создавать модели из ваших таблиц. Авторы Rails достаточно умны, чтобы признать необходимость поддержки «устаревших схем».

Обратите внимание, что если ваши первичные ключи не называются id, вам необходимо определить первичные ключи (см. Стр. 316 «Agile Web Development с Rails 3-е издание»):

class LegacyBook < ActiveRecord::Base
  self.primary_key = "isbn"
end

Аналогичным образом, если имена ваших внешних ключей не соответствуют стандартному стилю AR по умолчанию, вам необходимо явно определить их в определениях ваших отношений.

Из коробки ActiveRecord пока не поддерживает составные первичные ключи: он предполагает что-то более похожее на 5-ую нормальную форму (PK - просто произвольное число, не имеющее смысла в бизнес-сфере). Существует, по крайней мере, один драгоценный камень, соответственно названный Composite_primary_keys (установка драгоценного камня обычным способом), но он может еще не поддерживать AR 2.3 (я вижу v2.2.2, когда я gem list --remote composite) Там обсуждается Группы Google .

1 голос
/ 02 июня 2009

Я бы сбросил текущую базу данных в схему rails, а затем использовал бы ее для генерации файлов миграции. Таким образом, вы сможете лучше контролировать свою базу данных, как рельсы. Для этого вам необходимо:

  1. настроить файл конфигурации базы данных (config / database.yml)
  2. запустите rake db:schema:dump, который создаст файл схемы db/schema.rb
  3. создайте файл / файлы миграции, используя содержимое вашего schema.rb

-

 #db/migrate/001_create_database.rb
 class CreateDatabase < ActiveRecord::Migration
   def self.up
     # the content of schema.rb
   end

   def self.down
     # drop all the tables
   end
 end

Таким образом, вы сможете воспользоваться преимуществами миграции позже при разработке приложения.

1 голос
/ 02 июня 2009

Это должно сделать это

  def self.up
    execute <<EOF
begin;
  SQL HERE
commit;
EOF
  end
0 голосов
/ 06 июня 2009

отредактируйте файл config / database.yml следующим образом:

development:
  database: [your legacy database name]
  host: localhost
  adapter: postgres

вам, возможно, придется включить ключи имени пользователя и пароля, я обычно не использую postgres. Вы также захотите настроить тестовую базу данных в postgres.

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

> rake db:schema:dump 

и создайте свою тестовую базу данных, используя

> rake db:schema:load RAILS_ENV=test 

с результирующим файлом.

0 голосов
/ 02 июня 2009

Если ваши таблицы базы данных следуют RailR 'ActiveRecord соглашениям об именах , тогда вы должны быть готовы. Запустите SQL для создания объектов базы данных. Затем вы можете сгенерировать ваши модели Rails обычным способом, но пропустите создание файла миграции.

Например:

script/generate --skip-migration User name:string, age:integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...