1

我想知道是否有任何约定偏好反对将默认布尔值设置为真或假。也许它超出了 ActiveRecord 的范围,更像是一个一般的数据库设计问题。

我有一个带有active?属性的模型,默认情况下所有记录都处于活动状态。

:active, :boolean, default: true使用or进行迁移会更好:inactive, :boolean, default: false吗?

4

2 回答 2

6

以我的经验(Rails 或其他),布尔属性最容易理解,当它们用积极的措辞时。

如果您考虑一下您的示例,您实际上是在“活跃”和“不活跃”之间进行选择。选择“不活动”(实际上只是“不活动”)会使代码更难阅读,因为我必须在心理上否定“活动”这个词才能理解代码在做什么。

这似乎是一件小事,但我真的认为“主动”是更好的选择。


要了解我的意思,请使用您的两个不同迁移作为示例来查看可读性的差异:

# New records will be active by default.
:active, :boolean, default: true

# New records will be not "not active" by default.
:inactive, :boolean, default: false

这两条评论中哪一条更容易阅读和理解?我觉得第一个更清楚。

于 2012-10-15T19:32:29.693 回答
1

使用假而不是真。我更喜欢不为 boolean 设置默认值,因为无论如何nil它都被解释为falseRuby。

1.8.7 :001 > if nil
1.8.7 :002?>   0
1.8.7 :003?>   end
 => nil 
1.8.7 :004 > if false
1.8.7 :005?>   0
1.8.7 :006?>   end
 => nil 
1.8.7 :007 > if true
1.8.7 :008?>   0
1.8.7 :009?>   end
 => 0 

但我认为该决定还取决于您希望该属性做什么。我认为在罕见的情况下,将 true 作为默认值可能更有意义。

于 2012-10-15T19:34:24.153 回答