Jus*_*ner 2 ruby ruby-on-rails
给定以下带有enum列的ActiveRecord模型:
class User < ActiveRecord::Base
enum role: [:normal, :sales, :admin]
end
Run Code Online (Sandbox Code Playgroud)
保存到数据库之前,如何设置role列的默认值。
例如:
user = User.new
puts user.role # Should print 'normal'
Run Code Online (Sandbox Code Playgroud)
class User < ActiveRecord::Base
enum role: [:normal, :sales, :admin]
after_initialize do
if self.new_record?
self.role ||= :normal
end
end
end
Run Code Online (Sandbox Code Playgroud)
或者如果您愿意
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
Run Code Online (Sandbox Code Playgroud)
请注意,我们使用|| =来防止after_initialize破坏使用User.new(some_params)初始化期间传入的任何内容
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |