提供模型属性的默认值

时间:2018-07-25 10:32:47

标签: ruby-on-rails activerecord ruby-on-rails-5 rails-activerecord

我使用以下字段user_identifiernotification_time生成了一个用户模型:

rails g user user_identifier:string notification_time:string 

现在我想将notification_time设置为默认值17:00

什么是最好的方法?写回叫?如果是,怎么办?

2 个答案:

答案 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