簡體   English   中英

如何在Rails 5.1中關閉BIGINT主鍵

[英]How to turn off BIGINT primary keys in Rails 5.1

Rails 5.1遷移為表的主鍵( changelog )生成BIGINT (而不是Integer )。

是否可以在配置中的某個位置禁用它? 如果是這樣,如何禁用它?

根據pull請求 ,在配置級別上不可能這樣做。 但事實上,你可以將id強制為整數,如下所示:

create_table :users, id: :integer do

另一方面,您必須意識到更改也會影響references行為,因此您應該小心這些:

t.references :orders, type: :integer

看到這是重復代碼太多,我建議你為此編寫助手,覆蓋默認方法,或者非常激進並分叉數據庫適配器,根據需要更改它。 我會選擇第二個選項:

  1. Migration[5.0]ActiveRecord::ConnectionAdapters::TableDefinition創建匿名模塊
  2. 在第一個中定義create_tableadd_referenceadd_belongs_to ,在第二個中定義referencesbelongs_tobelongs_to應該只是references別名)
  3. 在那些方法中只需修改選項並調用super。 不要忘記處理簽名!
  4. 將這些模塊添加到各自的類中將為您處理所有事情。
  5. 你可以做得更好,也可以為他們的移除同行做這件事。

暫無
暫無

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

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