属性の値をBooleanとして評価する

属性名? メソッドを使うと属性の値がBooleanとして解釈される。
0(数値),"0"(文字列),"f","false"(文字列),"",nil,false(Rubyのbool型定数)=>false
それ以外=>true

 p user.name #=> "false"
 p user.name? #=> false

 p user2.name #=> "David"
 p user2.name? #=> true

 p user3.name #=> 0
 p user3.name? #=> false

そのほかの値をBool値として使う場合はメソッドをオーバーライドする。

 class Name < ActiveRecord::Base
   def name?
     self.name == 'David'
   end
 end

 p user4.name  #=> "David"
 p user4.name? #=> true

 p user5.name  #=> "Dona"
 p user5.name? #=> false

上の例だとtrueとみなす条件を定義している(name属性の値が'David'だとtrue、それ以外はfalse)が、
オーバーライドするメソッドを

  def name?
   self.name != 'David'
 end

のようにすれば、falseとみなす条件を定義できる(name属性の値が'David'だとfalse、それ以外はtrue)
条件が複数の場合は || (or演算子)でつなげばよい。
当たり前だけど、メソッドをオーバーライドすると標準の解釈はしない。

 p user6.name  #=> 0
 p user6.name? #=> true