2017-04-02 65 views
1

我有一個現有的鋼軌應用程序,其中一列現有semi-colon separated string。我想將其轉換爲默認爲empty array的數組。將現有鋼軌列從字符串轉換爲陣列

此外,對於已經有semi-colon separated string格式數據的行,我們需要將其轉換爲適當的數組。

  • 數據庫:psqlPostgreSQL
  • 框架:Rails 4.2

回答

0

以上是在任何應用中,很多人的全面發展一個相當常見的場景面臨的問題,而這樣做Rails中一樣。

在我看來,最簡單的方式來獲得這一切做的是:

  1. 生成一個新的遷移:rails g migration changeSomethingToArray
  2. 在新的遷移文件,添加以下代碼。

    class ChangeQualificationToArray < ActiveRecord::Migration 
    def change 
        rename_column :coaches, :qualifications, :qualifications_text 
        add_column :coaches, :qualifications, :text, default: [] 
    
        coaches = Coach.all 
        coaches.each do |c| 
        c.qualifications = convert_to_array(c.qualifications_text) 
        c.save 
        end 
    
        remove_column :coaches, :qualifications_text 
    
    end 
    
    private 
    
    def convert_to_array(string) 
        string.split(';') 
        # This can be changed to `,` or whatever you're using to split your string. 
    end 
    end 
    
0

我解決了它這樣的:

class ChangeQualificationToArray < ActiveRecord::Migration 

    def change 
    change_column :coaches, :qualifications, "varchar[] USING (string_to_array(qualifications, ';'))" 
    end 

end