47
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ActiveRecordのプロパティにblank? や present? をする必要はなかった!

Last updated at Posted at 2014-08-21

blank?present? って便利ですよねー。
タイトルの通りなんですが、ActiveRecordでの使い方を発見でしたので書いておきます。

blank? や present? について

ActiveSupportのメソッドとして定義されている

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

47
38
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?