簡體   English   中英

如何為活動記錄枚舉指定默認值?

[英]How do I specify a default value for an active record enum?

給定以下具有enum列的ActiveRecord模型:

class User < ActiveRecord::Base
  enum role: [:normal, :sales, :admin]
end

保存到數據庫之前,如何設置role列的默認值。

例如:

user = User.new
puts user.role # Should print 'normal'
class User < ActiveRecord::Base
  enum role: [:normal, :sales, :admin]

  after_initialize do
    if self.new_record?
      self.role ||= :normal
    end
  end
end

或者如果你願意的話

class User < ActiveRecord::Base
  enum role: [:normal, :sales, :admin]

  after_initialize :set_defaults

  private

  def set_defaults
    if self.new_record?
      self.role ||= :normal
    end
  end
end

請注意,我們使用|| =來防止在使用User.new(some_params)初始化期間傳入的任何內容的after_initialize clobbering

您可以將其設置為:默認為遷移文件中的“正常”。

小小的好例子: LINK

class User < ActiveRecord::Base
  enum role: [:normal, :sales, :admin]

  #before_save {self.role ||= 'normal'}
  # or
  #before_create {self.role = 'normal'}
end

您可以使用此回調,before_save

class User < ActiveRecord::Base
     before_save :default_values

        def default_values
          self.role ||= "normal"
        end
end

暫無
暫無

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

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