default_scopeには、初期値を代入する機能がある。(これ自体でハマることもある気がする)
しかし、default_scopeでの条件は個別には外せないので、避けたほうが無難。(unscopedで外せるけれど、これは全ての条件を消しさるので、has_many 等を介して呼んだ場合の条件も消えてしまう)
よくある?Rails失敗談 default_scope編 | TechRacho
http://techracho.bpsinc.jp/tsunekawa/2013_10_10/13553
なので、下記のようにする
class Model < ActiveRecord::Base
after_initialize :set_default_value
private
def set_default_value
self.number ||= 0.0
self.bool_field = true if (self.has_attribute? :bool_value) && self.bool_field.nil?
end
end
参考:
ruby on rails - How can I set default values in ActiveRecord? - Stack Overflow
http://stackoverflow.com/questions/328525/how-can-i-set-default-values-in-activerecord
追記:
あとからデフォルト値を追加するときは、新規に限ったほうがよい??
after_initialize :set_default_value, if: :new_record?