2012-09-25 46 views

回答

1

您必須創建遷移。在此遷移中,您首先必須創建新表,然後您可以選擇兩個選項。

  1. 您可以使用模型讀取數據,使用ruby過濾器方法過濾數據集,然後將剩餘模型轉換爲新數據並保存。但是我建議你不要這樣做,因爲在刪除當前模型後,您將無法在稍後執行此遷移。 (遷移使用舊的模式來讀取數據,但它不提供任何更多的代碼)
  2. 您可以使用純SQL:

    class XMigration < ActiveRecord::Migration 
        def up 
        execute <<-SQL 
    CREATE TABLE new_table 
    (id INTEGER AUTO_INCREMENT PRIMARY KEY, ...); 
    
    INSERT INTO new_table (...) 
    SELECT ... FROM old_table WHERE condition; 
        SQL 
        end 
    
        def down 
        raise ActiveRecord::IrreversibleMigration 
        end 
    end