2013-04-20 51 views
1

我正在研究一個Rails網站,該網站描述股票共同基金和ETF。我已經有一個單獨的Ruby腳本,每晚運行一次,並用這些共同基金和ETF上的數據填充Postgres數據庫。如何在Rails中使用LEGACY數據庫?

Rails教程的第6章並不完全符合我的要求。我想要做的和Rails教程的第6章之間的區別是: 1.在我的Rails站點中,不需要創建數據庫,因爲它已經被填充。所以我不認爲我需要使用「rails generate」或「rake db:migrate」。 (或者我錯了嗎?) 2. My Rails站點只讀取數據,不添加,刪除或編輯數據。

+1

看一看這個問題http://stackoverflow.com/questions/1226182/how-do-i-work-with-two-different-databases-in-rails -with-active-records – 2013-04-20 02:30:31

+2

您不必創建遷移。只需創建你的模型。如果數據庫表與模型名稱不匹配,則可以使用'set_table_name'。如果您不使用Rails標準的外鍵,則必須在關係中指定外鍵。 – 2013-04-20 02:30:37

+1

@ mind.blank,這個問題更多的是關於連接到應用程序內的多個數據庫。 – 2013-04-20 02:31:44

回答

1

您不必創建遷移。只需創建你的模型。如果數據庫表格與型號名稱不匹配,則可以使用舊版本的Rails的set_table_name或更新版本的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 2016-04-18 15:54:18

相關問題