簡體   English   中英

如果我在實時的Ruby on Rails應用程序中更改數據庫,該如何更新數據?

[英]If I change the database in a live Ruby on Rails app, how do I update the data?

因此,我終於准備好允許一些朋友使用我在Heroku上托管的Ruby on Rails應用程序。 我想開始獲得一些反饋,因為我還在不斷發展。

如果我需要以某種方式更改數據庫怎么辦? 數據庫中將有數據,因此我將不得不更改數據以反映數據庫中的更新,但是我不確定該如何完成。 謝謝閱讀。

通常,最佳實踐是為實際用戶創建生產數據庫。 (即使您的應用仍處於測試階段)。 擁有獨立的生產和開發數據庫將使您的生活更加輕松。

例如:開發數據庫通常具有損壞的數據,這意味着較少的虛擬數據等。

  • 更改數據結構時,您可以執行以下操作
  • 始終通過遷移進行更改(很容易還原,回滾等)
  • 當您向表中插入值時,為此創建一個遷移。 (這將避免您多次上傳相同的數據)
  • 編寫遷移時,請始終確保您具有正確的回滾方法(self.down)
  • 始終為默認值

干杯

薩梅拉

您是否使用遷移來創建數據庫? 如果是這樣,那么更改數據庫所需要做的就是創建一個遷移,該遷移在數據庫中添加/刪除/更改表。 例如:

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工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM