Rails [提问] 对 Model 某 field 设定缺省值的 Best Practice

dominic · April 01, 2012 · Last by dominic replied at April 01, 2012 · 2576 hits

要对 Model 的某个 field,比如对 amount 设定缺省值,Ruby China wiki 上推荐写法是: 方法一:override getter setter def amount self[:amount] or 0 end

而 StackOverflows 里推荐的是: 方法二:利用 after_initialize :default_values

class Trade < ActiveRecord::Base after_initialize :default_values private def default_values sell_type ||= "AVG" end end

方法二似乎不错。我现在的疑问是,如果用方法一,覆盖 getter 和 setter,getter 和 setter 在什么动作时会触发?对 Model 的创建、修改、删除、查询等过程中,有没有什么操作会绕开这两个 Setter 和 Getter,导致行为异常(没有写入缺省值、SQL 查询结果错误)?

amount 这类型的需求,可以直接用 database 的 default value

StackOverflows 上有讨论用 database 的 default value,结论是不怎么好,除了修改比较麻烦外,好像还有一个原因,我忘了。

#3 楼 @hooopo 连这种 gem 都有,我服了。

You need to Sign in before reply, if you don't have an account, please Sign up first.