2013-04-20 1 views
1

Я работаю над веб-сайтом Rails, в котором представлены фондовые паевые фонды и ETF. У меня УЖЕ ИМЕЕТ отдельный скрипт Ruby, который работает в ночное время и заполняет базу данных Postgres данными об этих взаимных фондах и ETF.Как работать с базой данных LEGACY в Rails?

Глава 6 руководства Rails не совсем то, что я ищу. Различия между тем, что я пытаюсь сделать, и чем главу 6 руководства Rails: 1. На моем сайте Rails нет необходимости создавать базу данных, поскольку она уже заполнена. Поэтому я не думаю, что мне нужно использовать «rails generate» или «rake db: migrate». (Или я ошибаюсь?) 2. Мой сайт Rails только считывает данные и не добавляет, не удаляет или не редактирует данные.

+1

Взгляните на этот вопрос http://stackoverflow.com/questions/1226182/how-do-i-work-with-two-different-databases-in-rails -with-active-records –

+2

Вам не нужно создавать миграции. Просто создайте свои модели. Если таблица базы данных не соответствует имени модели, вы можете использовать 'set_table_name'. Если вы не используете стандарт Rails для внешних ключей, вам нужно будет указать внешний ключ в отношениях. –

+1

@ mind.blank, этот вопрос больше связан с подключением к нескольким БД в приложении. –

ответ

1

Вам не нужно создавать миграции. Просто создайте свои модели. Если таблица базы данных не соответствует имени модели, вы можете использовать set_table_name для более ранних версий Rails или self.table_name = 'table_name' для более новых версий. Если вы не используете стандарт Rails для внешних ключей и первичных ключей, вам также нужно будет указать их.

Например:

# Assuming newer versions of Rails (3.2+, I believe) 

class ETF < ActiveRecord::Base 
    self.primary_key = 'legacy_id' 
    self.table_name = 'legacy_etfs' 
    has_many :closing_prices, foreign_key: 'legacy_etf_id' 
end 

class ClosingPrice < ActiveRecord::Base 
    self.primary_key = 'legacy_id' 
    self.table_name = 'legacy_closing_prices' 
    belongs_to :etf, foreign_key: 'legacy_etf_id' 
end 
+0

Если у вас есть 30 моделей, это много набирает. Вы можете проверить драгоценный камень «схема для эшафот». https://github.com/frenesim/schema_to_scaffold - строительные леса создают миграции, контроллеры, модели и представления. Проверки, отношения и таблицы и ключи, не связанные с рельсами, определяются в ваших моделях автоматически. – JosephK