私は既存のレールアプリケーションを持っていて、列の1つに既存のsemi-colon separated string
があります。私は、デフォルトとしてempty array
の配列に変換したいと思います。既存のレール列を文字列から配列に変換する
また、すでにsemi-colon separated string
形式のデータがある行では、適切な配列に変換する必要があります。
- データベース:
psql
またはPostgreSQL
- フレームワーク:
Rails 4.2
私は既存のレールアプリケーションを持っていて、列の1つに既存のsemi-colon separated string
があります。私は、デフォルトとしてempty array
の配列に変換したいと思います。既存のレール列を文字列から配列に変換する
また、すでにsemi-colon separated string
形式のデータがある行では、適切な配列に変換する必要があります。
psql
またはPostgreSQL
Rails 4.2
上記は、任意のアプリケーションの開発にはかなり一般的なシナリオであるとRailsで同じことをやっている間多くの人が問題に直面しています。
私の意見では、このすべてを成し遂げるための最も簡単な方法は次のとおりです。
rails g migration changeSomethingToArray
を。
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
私はこのようにそれを解決:
class ChangeQualificationToArray < ActiveRecord::Migration
def change
change_column :coaches, :qualifications, "varchar[] USING (string_to_array(qualifications, ';'))"
end
end