1

デフォルトのブール値をtrueまたはfalseに設定することに対する慣習的な優先事項があるかどうか疑問に思っています。おそらくそれは ActiveRecord の範囲を超えており、より一般的なデータベース設計の問題です。

active?デフォルトですべてのレコードがアクティブな属性を持つモデルがあります。

または を使用して移行する方が良いです:active, :boolean, default: true:inactive, :boolean, default: false?

4

2 に答える 2

6

私の経験(Railsまたはその他)では、ブール属性は、肯定的に表現されている場合に最も簡単に理解されます。

あなたがあなたの例について考えるならば、あなたは本当に「アクティブ」と「非アクティブ」の間で選択しています。「非アクティブ」(これも実際には「非アクティブ」)を選択すると、コードの動作を理解するために「アクティブ」という単語を精神的に否定する必要があるため、コードが読みにくくなります。

小さなことのように思えるかもしれませんが、私は本当に「アクティブ」がより良い選択だと思います。


私が何を意味するかを理解するには、2つの異なる移行を例として使用して、読みやすさの違いを確認してください。

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

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

これらの2つのコメントのどちらが読みやすく、理解しやすいですか?私は最初のものがより明確であると思います。

于 2012-10-15T19:32:29.693 に答える
1

true ではなく false を使用してください。とにかくRubyのようにnil解釈されるため、ブール値のデフォルト値を設定しないことを好みます。false

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 に答える