blank?
や present?
って便利ですよねー。
タイトルの通りなんですが、ActiveRecordでの使い方を発見でしたので書いておきます。
blank? や present? について
ActiveSupportのメソッドとして定義されている
- Rails 4-0-stable/activesupport/lib/active_support/core_ext/object/blank.rb
- これらのメソッドの使い道としては nil または 空 を判定するときに使います。
blank? とは
-
nil?
またはempty?
の時に true となるメソッド
実装は少し違うけど、イメージはこんな感じのメソッド
address.nil? || address.empty?
実装とか細かい blank? に関する解説は以下の記事が参考になります。
Rails - blank?の振る舞いを詳しく調べてみた - Qiita
present? とは
-
blank?
の逆
実装はこんな感じ
def present?
!blank?
end
ActiveRecordのプロパティで使う場合は blank? や present? は不要!
ここから本題です。。 以下のように使えます!!!
=> ※数値のプロパティに対する注意についてコメントを頂きました
サンプル1
@user = User.first
@user.name? # = @user.name.present?
以下のとおり、Before と After を見比べると Afterは 少しスッキリします!
Beforeコード
@user = User.first
if @user.name.present?
# nameに何か値があるときの処理
end
if @user.name.blank?
# nameが 空 の時の処理
end
Afterコード
@user = User.first
if @user.name?
# nameに何か値があるときの処理
end
unless @user.name?
# nameが 空 の時の処理
end
すべては Rails Best Practice に書いてありました!
参考:Rails Best Practices | Use query attribute