2017-04-02 10 views
1

私は既存のレールアプリケーションを持っていて、列の1つに既存のsemi-colon separated stringがあります。私は、デフォルトとしてempty arrayの配列に変換したいと思います。既存のレール列を文字列から配列に変換する

また、すでにsemi-colon separated string形式のデータがある行では、適切な配列に変換する必要があります。

  • データベース:psqlまたはPostgreSQL
  • フレームワーク: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 
関連する問題