我想使用自定義類型列將STI添加到現有表。我們稱之爲taste_type,其對應的模型是Fruit。將STI添加到現有表
在水果模型我有:
set_inheritance_column :taste_type
在我的移民加入STI我:
class AddSTI < ActiveRecord::Migration
def self.up
add_column :fruits, :taste_type, :string, :limit => 100, :null => false
Fruit.reset_column_information
Fruit.find_by_id(1).update_attributes({:taste_type => 'Sour'})
end
def self.down
remove_column :fruits, :taste_type
end
end
當我運行遷移,我收到以下錯誤:
Mysql::Error: Column 'taste_type' cannot be null: ...
任何想法是怎麼回事?如果我在Fruit模型中評論set_inheritance_column,則可以運行遷移,然後在運行遷移後取消註釋。顯然,我不想這樣做,但是。
或者,如果可能的話,重新播種的非空字段中的數據。 – 2010-04-12 02:44:55
用戶正在向包含數據的表添加新的非空列。如果新列不能爲空,他將無法越過'add_column'。 – 2010-04-12 03:17:38
在add_column和change_column之間,我不得不這樣做來刪除默認值:change_column_default(table_name,column_name,nil) – kstevens715 2015-01-14 17:25:57