簡體   English   中英

Rails:即使默認值設置為0,枚舉字段仍為零

[英]Rails: Enum field taking nil value even though default value set as 0

我在模型中定義了以下enum字段:

class ClientRegistration < ApplicationRecord
  enum status: { pending: 0, registered: 1, activated: 2, suspended: 3 }
  enum cloud_type: { onprem: 0, aws: 1, gcp: 2, azure: 3 }
end

相同的遷移文件如下所示:

class CreateClientRegistrations < ActiveRecord::Migration[5.2]
  def change
    create_table :client_registrations do |t|
      t.string :instance_id
      t.string :private_ip
      t.string :mac_address
      t.integer :cloud_type, default: 0
      t.string :public_ip
      t.string :region
      t.integer :status, default: 0

      t.timestamps
    end
  end
end

現在奇怪的是,如果我未指定任何第一列狀態,則第一列狀態將不為默認值。 另外,如果我明確指定為pending ,則不會采用第一個值。 但是在第二列cloud_type的情況下它可以onprem ,如果我不指定任何默認值,它將默認為onprem 我是否需要更改column_name左右?

您可以嘗試向遷移添加“ null:false”。

  t.integer :cloud_type, null: false, default: 0

  t.integer :status, null: false, default: 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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