[英]'Connect' a rails app to an already existing MySQL DB?
因此,在我的公司中,我們正在緩慢地轉向Rails而不是PHP(確切地說是Code Igniter)。 因此,我們實際的PHP應用程序正在使用Mysql數據庫,並且我想將新的Rails應用程序連接到該數據庫,但是與此同時,我們的PHP仍在運行,因此無法更改該數據庫。
我真的不知道我應該從哪里開始使用所有的rails功能(或者至少是盡可能多的)。
將Rails應用程序連接到現有數據庫應該不會有任何危害。 您將需要注意任何與Rails約定不符的事情(例如,表名是多個模型),並更改數據庫(和您的php應用程序)或解決Rails中的問題。
但是第一步只是連接到數據庫並為現有表建立模型,然后查看哪些有效,哪些無效。
之后,請在此處發布任何具體問題。
作為建議,請備份數據庫,然后針對該數據庫開始編程,以構建應用程序,並確保一切都能安全運行。
好吧,首先,您應該在config / database.yml中設置連接,然后開始逐表生成支架(模型,視圖和控制器)(檢查Rails generate命令)。 我不太確定您是否已經生成了該應用程序。 無論如何,生成器還會生成一個遷移腳本,您顯然不想運行該遷移腳本,因為該數據庫已經存在。
希望這個對你有幫助。
無論如何,一些資源:
對於這種情況,需要考慮Rails應用程序的兩個方面:
只需將此數據庫的憑據放入database.yml。
默認情況下,“用戶”之類的模型將嘗試在名為“用戶”的表中查找記錄和屬性定義。 ActiveRecord將假定每個表上都有一個自動遞增的整數主鍵。 保存記錄時,它將嘗試寫入稱為created_at
和updated_at
列。 在建立和使用連接時,請注意以下幾點。
Rails使用遷移文件來管理對數據庫結構的一系列更改。 在正常情況下,構建Rails應用程序的人將從一個空的數據庫開始。
對於現有數據庫,我建議進行如下遷移:
class BuildLegacyDbStructure < ActiveRecord::Migration
def up
Mysql2.connection.execute_some_sql_file( # made-up function
Rails.root.join('path', 'to', 'file')
)
end
def down
# reverse those changes; bring DB down to blank state
end
end
另一個選擇是完全禁用Rails / ActiveRecord的基於遷移的數據庫管理。 例如,當您生成新模型時,Rails將生成一個遷移。 所以,如果你在你的PHP應用程序有一個現有用戶表,並且希望做一個滑軌模型中使用此表,你運行像rails generate model User --no-migration
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.