Eim*_*tas 3 ruby-on-rails counter-cache
我正在使用rspec进行测试中使用的对象图的测试和hornsby场景.
将计数器缓存列初始化为0值而不是将它们保持为未初始化(nil)是一种好习惯吗?或者我应该在创建这些计数器缓存列的迁移中定义默认值?
是的,您应该设置默认值.否则,您必须使用特殊情况数学运算来处理NULL.
假设你有一系列的帖子对象,你想得到评论数量的总和.
如果你将初始化为零@posts.sum(&:comment_count),但如果你不这样做,它可能不会因为它将在nil上失败.
我建议像这样定义你的列:
add_column :posts, :comments_count, :integer, :default => 0, :null => false