簡體   English   中英

Rails遷移中的默認值的常量

[英]A constant for a default value in Rails migration

我剛剛開始使用Rails並決定制作一個小應用程序來學習實用的東西。

我有一個用戶類,它有一個用戶組整數字段。 我想使用常量添加到遷移a:默認值。

在我的用戶模型中,我使用常量定義了不同的組,以便稍后我可以輕松地檢查“admin?” 等等

t.integer :user_group, :default => USER

我在db:migrate上收到以下錯誤

耙子流產了! 期望[...] / app / models / user.rb定義USER

但是在用戶模型中我有這個:

ADMIN = 1
USER = 2

我有什么想法我做錯了嗎?

在引用常量時,您需要包含類名。 如果您的類名為User ,請嘗試以下操作:

t.integer :user_group, :default => User::USER

要么

t.integer :user_group, :default => User::ADMIN

您不應在遷移中使用常量,因為遷移應表示獨立的時間點。 遷移不應該耦合到可能隨時間變化的代碼庫,因為遷移隨后會根據您運行它的時間而改變。 如果您或其他人在代碼庫中更改常量的值(稍后),則會影響遷移。 您實際上需要更改代碼中的常量值可能不太現實,但這僅僅是原理上的參數。

如果要在稍后的某個時間點更改數據庫中的默認值,則只需使用新值進行新的遷移。

我想你也可以寫:

t.integer :User, :user_group, :default => ADMIN

我錯了嗎 ?

暫無
暫無

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

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