オーダーメイドコース
icon
icon

Railsのpresenceメソッドの使い方を現役エンジニアが解説【初心者向け】

初心者向けにRailsのpresenceメソッドの使い方について解説しています。これはオブジェクトが存在するかを調べるときに使用します。present?メソッドの場合との文法の違いと使用例を見てみましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Railsのpresenceメソッドの使い方について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

presenceメソッドの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

presenceメソッドとは

RailsのActiveSupportの便利なメソッドの一つにpresenceメソッドがあります。

このpresenceメソッドはオブジェクトが存在すればそのオブジェクトを返し、オブジェクトが存在しなければnilを返すメソッドとなります。

presenceメソッドはRailsのメソッドですのでRubyだけで使う場合は、ActiveSuopprtをインクルードする必要があります。

presenceメソッドの定義を見ると

 

def presence

  self if present?

end

 

となっております。

Rubyならpresent?メソッドで書くところをpresenceメソッドでスッキリ書くことができるのが特徴的ですね。

 

presenceメソッドの使い方

Rubyで例えば以下のようにpresent?メソッドで

 

object.present? ? object : 'オブジェクト'

 

のようなのがあればpresenceメソッドでは

 

object.presence || 'オブジェクト'

 

とスッキリ書くことができます。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは実際に書いてみましょう!!

 

簡単なRailsアプリケーションを作成します。

$ rails new bar

$ cd bar

$ rails g scaffold user name:string

$ rails db:migrate

 

#app/model/user.rb

class User < ApplicationRecord

  def call

    name.presence || '名無しさん'

  end

end

 

userのnameに値があればその値を返し、なければ “名無しさん” と文字列が返すメソッドを作成しました。

 

#app/controller/users_controller.rb

class UsersController < ApplicationController

  ~~~~~~~~~~~~~~~~~~

  def show

    @user = @user.call

  end

  ~~~~~~~~~~~~~~~~~~

end

 

#app/views/users/show.html.erb

<%= @user %>

 

@userのnameに値があればその値が表示され、なければ “名無しさん” と表示されます。

※nameに名前を入れたユーザーと名前を入れないユーザーを作成してください。

 

筆者プロフィール

町田 耕

学生時代は会計学専攻。塾講師勤務を経て、企業のCFOとして会社経営に携わる。

会社経営から一線を退いた後、インフラエンジニアの妻の勧めでプログラミングを独学で始め、プログラミングセミナーなど転々としながら、開発案件に携わるようになる。

現在、フリーランスとして活動しながらテックアカデミーのメンターも勤めている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。