我使用rspec的用于测试和Hornsby的用于在试验中使用的对象图的场景。

这是很好的做法来初始化计数器缓存列0值,而不是让他们未初始化(无)的?或者我应该在创建这些计数器缓存列迁移定义默认值?

有帮助吗?

解决方案

是的,你应该设置的默认值。否则,您必须特例数学运算来处理空值。

让我们说你有后对象的数组,你希望得到总结的评论的数量。

如果您初始化为零@posts.sum(&:comment_count)会,但如果你不这样做,可能不是因为它会失败在零。

我建议定义你这样的列:

add_column :posts, :comments_count, :integer, :default => 0, :null => false

其他提示

滑轨简单地发送以下SQL

UPDATE posts SET comment_count = comment_count + 1, WHERE id IN (10, 15)

所以,无论是DB知道未定义+1 == 1或Rails会一些它自己的初始化。 在这似乎是稳定的行为,我无论是哪种情况,所以不要将它们设置为零并保存工作。既然你将无法看到,如果你做了初始化反正(它只是不一样的),你将如何对其进行测试。如果它不能保证你所进行初始化你有什么真正适应未来发展方面获得的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top