なんとなく奇妙だったのでなんとなく使ってこなかったAttribute query methods。
ちゃんと調べた。
一体何の話かというと、Railsのモデルのインスタンスには、カラム名に?
を付けたメソッドが使えるようになる。
こんなの ↓
user = User.first
user.name = ''
user.name?
# => false
user.name = 'pugi'
user.name?
# => true
user.num = 0
user.num?
# => false
user.num = 1
user.num?
# => true
この挙動、、present?
とも!!
とも違う。。
なんだこれは、、、と思うけど、この処理の正体はActiveRecord::AttributeMethods::Query#query_attributeにあり、ここを見ると
- trueの場合はtrue
- false,nilの場合はfalse
- 数字カラムの場合は
!zero?
- それ以外の種類のカラムの場合は
!blank?
という分岐があった、なるほどな。
これで安心して使っていけますね。(多分そんなに使わない