0

p_typeタイプがありA、文字列としてBC

今では、一緒bitmaskに持つことができるように、それを持っている方が良いことに気づきました。AC

私が行った場合

change_column :cars, :p_type, :integer

既存のすべての p_type データを失うか、何かがひどくうまくいかず、移行によってデータが何らかの形で歪められます (試してみるのが怖いです)。

列のタイプを : に変更integerし、移行ファイルに何らかの機能を持たせる方法はありますか?

if A
 p_type = 1
elsif B
 p_type = 2
elsif C
 p_type = 4
end

移行によってデータ型とデータ自体が変更されるのでしょうか?

4

2 に答える 2

0

最初に 1 つの rake タスクを実行して、p_type 列を更新できます。

Model_name.each { |obj|
if obj.p_type == "A"
 p_type = "1"
elsif obj.p_type == "B"
 p_type = "2"
elsif obj.p_type == "C"
 p_type = "4"
end
obj.save
}

これが役立つことを願っています。

于 2013-04-23T10:50:14.283 に答える
0

Heroku で列の種類を変更するにはどうすればよいですか?

rename_column :cars, :p_type , :p_type_string
add_column :cars, :p_type , :integer
Car.reset_column_information
Car.find_each { |c| c.update_attribute(:p_type , c.p_type_string) } 
remove_column :cars, :p_type_string
于 2013-04-23T11:22:21.717 に答える