簡體   English   中英

Rails 遷移從 boolean 更改為特定字符串

[英]Rails Migration change from boolean to specific string

我正在嘗試運行遷移以將列的類型從booleanstring ,如果為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM