使用default_value_for來設定AR attribute的初始值
2016-04-02 17:13:57

What

幫你設定ActiveRecord attribute的初始值。

Why

我通常都直接在migration就設好初始值,不過這樣的做法有幾個問題:

  • 初始值一旦設定了,就很難在更改。
  • model被new但還沒save時,對應的attribute並不會有初始值。

How

在model中設定 default_value_for 即可。

class User < ActiveRecord::Base
  default_value_for :name, "(no name)"
  default_value_for :last_seen do
    Time.now
  end
end

u = User.new
u.name       # => "(no name)"
u.last_seen  # => Mon Sep 22 17:28:38 +0200 2008

default_value_for 還提供了多種使用的方式,請參考官網。

Refs