将现有钢轨列从字符串转换为阵列
问题描述:
我有一个现有的钢轨应用程序,其中一列现有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