2010-09-20 50 views
0

因此,我終於準備好允許一些朋友使用我在Heroku上託管的Ruby on Rails應用程序。我想在開發過程中獲得一些反饋意見。如果我在實時Ruby on Rails應用程序中更改數據庫,如何更新數據?

如果我需要以某種方式修改數據庫會發生什麼?數據庫中會有數據,所以我將不得不更改數據以反映數據庫中的更新,但我不確定這是如何完成的。謝謝閱讀。

回答

2

通常最好的做法是爲真正的用戶創建一個生產數據庫。 (即使你的應用程序仍處於測試階段)。擁有一個單獨的生產和開發數據庫將使您的生活更輕鬆。

例如:開發數據庫通常已經被破壞的數據,這意味着更少的虛擬數據等。

  • 在改變你的數據結構,你 可以做以下
  • 總是做一個 遷移更改(它很容易 回滾等)
  • 當您將值插入到 表中時,爲此創建一個遷移。 (這將節省您從上傳 相同的數據多次)
  • 當你寫一個遷移,總是 確保你有適當的 回滾方法(self.down)
  • 你總是默認值

歡呼

sameera

1

你使用遷移創建數據庫?如果是這樣的話,那麼您所要做的只是改變數據庫就是創建一個遷移,在數據庫中添加/刪除/更改表。例如:

class AddMyColumnToMyTable < ActiveRecord::Migration 
    def self.up 
    add_column :table, :my_column, :string 
    end 

    def self.down 
    remove_column :table, :my_column 
    end 
end 

然後添加/刪除數據,創建一個數據遷移,像這樣:

class AddDataToMyTable < ActiveRecord::Migration 
    def self.up 
    tables = Table.all 
    tables.each do |table| 
     table.my_column = 'new value' # Put more meaningful data population here 
     table.save! 
    end 
    end 

    def self.down 
    tables = Table.all 
    tables.each do |table| 
     table.my_column = nil 
     table.save! 
    end 
    end 
end 

數據遷移可以是簡單或你想他們是那麼複雜。在所有情況下,數據遷移不一定是填充數據庫的最佳方式,但對於簡單的情況,它們工作得很好。 (不要忘記用適當的關係更新任何模型!)

如果您沒有通過遷移創建數據庫,則只能通過直接操作數據庫來更改數據以反映對數據庫的更新通過SQL。通過SQL進行操作始終是Rails應用程序中的一個選項,但遷移具有明顯的優勢。它們使您能夠提交或回滾對數據庫結構的更改,而不僅僅是數據。而且,遷移爲你做了SQL工作。

相關問題