[英]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.