![](/img/trans.png)
[英]How do I set a default value in rails active record based on two other values in the active record?
[英]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.