Ruby中的年龄计算

El *_*ino 2 ruby datetime ruby-on-rails

我正在尝试编写一个rails应用程序,但目前显示的出生日期显示为正常的日期格式,但我很乐意在视图中显示年龄而不是

我在控制器中的方法如下,我的数据库中有一个列DOb用于出生日期

def age
  @user = user
  now = Time.now.utc.to_date
  now.year - @user.dob.year - (@user.dob.to_date.change(:year => now.year) > now ? 1 : 0)
end
Run Code Online (Sandbox Code Playgroud)

它显示像DOB:23/5/2011,但我希望它可以在几年内成为年龄.

我如何设置一个验证器,检查年龄是否低于18岁?

Bal*_*ick 7

对于验证器,您可以使用自定义方法:

validate :over_18

def over_18
  if dob + 18.years >= Date.today
    errors.add(:dob, "can't be under 18")
  end
end
Run Code Online (Sandbox Code Playgroud)