[英]Rails Migration change from boolean to specific string
我正在嘗試運行遷移以將列的類型從boolean
為string
,如果為true
,則分配一個特定的字符串值,如果為false
,則分配另一個
我正在嘗試但不起作用:
def change
change_column :people, :owner, :string, using: "CASE WHEN owner THEN 'foo' ELSE 'bar' END"
end
遷移運行沒有錯誤,但true
轉換為"1"
, false
轉換為"0"
,而不是我指定的字符串。 如果相關,數據庫是 mysql。
您可以使用@engineersmnky 在評論中提到的以下解決方案。
def change
add_column :people, :temp_owner, :string, default: 'bar'
#for using temp_owner column.
Person.reset_column_information
Person.where(owner: true).update_all(temp_owner: 'foo')
remove_column :people, :owner
rename_column :people, :temp_owner, :owner
end
我希望這能解決你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.