2014-11-25 62 views
0

我正在研究一個需要在Rails中重寫的網站。該網站之前在Drupal中,數據庫中有近100,000條記錄。現在,在Drupal中,我認爲有些表格在Rails中沒有任何地方。例如,基於Drupal的網站架構可以導入到Rails嗎?

Table name: node_type 
It stores information regarding modules in Drupal. 
Table name: node 
It stores information for node(s) in Drupal. 
Table name: semaphore # I've no idea what it is! 
Table name: rdf_mapping # No idea 

我沒有一直與Drupal的,所以我只想問:是否有可能對Rails的架構,其中已有10萬條記錄可以從Drupal的進口?如果是這樣,怎麼樣?如果不是這樣,我剩下的其他選擇是什麼?或者我必須設計一個全新的數據庫模式?

+0

無論如何,您需要編寫一個腳本將Drupal數據庫中的記錄導入到Rails中,因此您不妨花時間小心處理它,並設​​計出最適合您需求的模式。 – sebkkom 2014-11-25 11:09:43

回答

1

嗯,我沒有直接的答案,但我有一些想法,我會做的只是不做那麼多的數據庫更改,或按照評論你可以寫下一個SQL腳本遷移數據根據軌道模式,如每個表的類型。現在,我只是想在此分享我的想法,但我相信可能會有更明確的解決方案,並且這可以通過多種方式實現,可能需要一些自定義設置(?)來覆蓋默認約定。根據我的想法,你可以嘗試以下的事情。

    1. 生成相關模型跳過遷移
  • 明確定義的表給每個模型,如下面的片段:
  • class Semaphore < ActiveRecord::Base self.table_name = "semaphore" end

    1. 您必須爲記錄ID和關聯明確定義外鍵和主鍵。
  • 你產生時標,或者你可以明確地避免類似下面的方式
  • ActiveRecord::Base.record_timestamps = false

這些都是基本的東西我可以看到很重要。

+0

Rails中的約定呢?對於文件上傳,我必須在Rails中使用一個gem say'paperclip'來爲我自動生成一個表格。我如何將它與Drupal架構中的文件相關表匹配? – user3430287 2014-11-25 11:47:34

+0

這也可以同步我猜!或者您可能需要編寫一個rake任務以使用rails模型再次上載這些附件以遷移這些附件。那麼,這是我迄今爲止所能想到的。 – Rubyrider 2014-11-25 11:49:12

2

由於某種原因,Drupal的數據庫模式沒有被廣泛記錄......它被視爲實現細節,不是公共API,不應直接訪問,特別是外部應用程序。

這也很難記錄,因爲對於給定的站點,任何啓用的模塊都可以添加自己的表並更改現有的表(通常添加列)。另外你有像Fields(Drupal核心的一部分)這樣的模塊,根據定義的內容類型動態地創建表。

對於RoR開發人員來說,Drupal架構可能會看起來很古怪,並且不適合使用。我會按照其他人的建議,爲您的新應用程序創建一個新模式,並創建一個遷移腳本,以便將數據從舊Drupal數據庫獲取到新數據庫。我不知道RoR,但試圖找到一個好的數據遷移,以允許重放,更新和回滾等。您可能需要多次遷移數據才能修復流程中的錯誤。