【rails】プロフィールに年齢を表示する

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

プロフィールに年齢を表示する

前回までで、プロフィールを表示できた

今回は、プロフィールの情報をもとに年齢を計算・表示する


年齢を計算する

app/models/profile.rbを開く

class Profile < ApplicationRecord
 # 中略

  def age
    return '不明' unless birthday.present?
    years = Time.zone.now.year - birthday.year
    days = Time.zone.now.yday - birthday.yday

    if days < 0
      "#{years - 1}歳"
    else
      "#{years}歳"
    end
  end

end

birthdayが存在しないとき、「不明」と表示する

  1. Time.zone.nowは今の時間のこと
  2. Time.zone.now.year - birthday.yearyearsに渡す
  3. ydayとは、1年の始まりから何日経過しているかが取得できる
  4. Time.zone.now.yday - birthday.ydaydaysに渡す
  5. days < 0のとき(誕生日がまだ来てない)
    "#{years - 1}歳"と表示する
  6. days < 0じゃない(else)なら、"#{years}歳"と表示する

#DAY24