我想知道是否有任何约定偏好反对将默认布尔值设置为真或假。也许它超出了 ActiveRecord 的范围,更像是一个一般的数据库设计问题。
我有一个带有active?
属性的模型,默认情况下所有记录都处于活动状态。
:active, :boolean, default: true
使用or进行迁移会更好:inactive, :boolean, default: false
吗?
我想知道是否有任何约定偏好反对将默认布尔值设置为真或假。也许它超出了 ActiveRecord 的范围,更像是一个一般的数据库设计问题。
我有一个带有active?
属性的模型,默认情况下所有记录都处于活动状态。
:active, :boolean, default: true
使用or进行迁移会更好:inactive, :boolean, default: false
吗?
以我的经验(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
这两条评论中哪一条更容易阅读和理解?我觉得第一个更清楚。
使用假而不是真。我更喜欢不为 boolean 设置默认值,因为无论如何nil
它都被解释为false
Ruby。
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 作为默认值可能更有意义。