我有一個現有的鋼軌應用程序,其中一列現有semi-colon separated string
。我想將其轉換爲默認爲empty array
的數組。將現有鋼軌列從字符串轉換爲陣列
此外,對於已經有semi-colon separated string
格式數據的行,我們需要將其轉換爲適當的數組。
- 數據庫:
psql
或PostgreSQL
- 框架:
Rails 4.2
我有一個現有的鋼軌應用程序,其中一列現有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