我使用以下字段user_identifier
和notification_time
生成了一个用户模型:
rails g user user_identifier:string notification_time:string
现在我想将notification_time
设置为默认值17:00
什么是最好的方法?写回叫?如果是,怎么办?
答案 0 :(得分:2)
您可以使用带有条件的before_save
回调,例如:
before_save -> item { item. notification_time = "17:00" }, unless: :notification_time?
您还可以在Rails 5中使用attribute
:
attribute :notification_time, :string, default: "17:00"
您也可以在数据库中设置一个默认值,但是对于这种例行程序来说,这似乎不是一个灵活的解决方案,因为如果您想更改该值,则需要运行单独的迁移而不是只需更改代码中的值即可。
答案 1 :(得分:0)
您可以选中此How do I create a default value for attributes in Rails activerecord's model?
基本上,您必须运行迁移
add_column :users, :notification_time, :string, default: "17:00"
或您所说的使用回调
before_save :default_values
def default_values
self.notification_time ||= "17:00"
end