2012-09-28 51 views
1

我剛剛與db的工作。我們在服務器上生產了一款Rails應用程序。我們繼續在當地發展。這些開發中的一部分會導致向db中添加東西。爲了保持dbs同步,我們手動爲本地執行的所有事情編寫種子代碼,然後計劃上傳種子代碼並在服務器上運行rake命令。這種方式通常是這樣做的嗎?有沒有簡單的方法來編寫這個種子代碼?這似乎是費力和痛苦的,我只是瀏覽數據庫,試圖找出最新的變化,然後編寫代碼,希望將相同的數據添加到服務器上的數據庫。謝謝Rails,播種代碼很難寫

+0

一個無模式的解決方案是這樣的東西,你可以用遷移做(也加入到'db/seeds.rb',你可能需要做什麼全新的安裝,就像一個新的開發者加入這個項目一樣)? – x1a4

+0

我不知道。再一次,我對此很新。我的理解是遷移是爲了添加模式,而種子是爲了添加數據。這肯定涉及到添加數據。也許有播種機,就像遷移一樣。或者,也許我對它們的理解是不準確的。 – dt1000

+0

通過單個文件 - db/seeds.rb來完成播種。如果您需要隨着時間的推移添加新數據,最好的辦法是使用遷移,因爲播種只能運行一次。你*通常使用遷移來進行模式變更,但是從你的描述來看,它們似乎也是你最好的。 – x1a4

回答

0

我在過去碰到過類似的問題,而且我們在遷移時做過。這樣做

class AddSomeStuffToMyThing < ActiveRecord::Migration 
    def self.up 
    widget=MyThing.new() 
    widget.attr_1 = "some stuff" 
    widget.attr_2 = 341 
    ... 
    def self.down 
    widget = MyThing.find_by_attr_1("some stuff") 
    widget.destroy 

如果你經常改變你的數據庫的種子數據,那麼也許你應該開始尋找到像蒙戈或CouchDB的