Ruby Mongoid:如何将日期转换为年龄?

Ruby Mongoid: How to convert a date into age?

我在 Mongoid user 集合字段 dob 中有一个日期。 我想获得那些年龄在 18-30 岁之间的用户。 但我不知道如何从 Mongoid 的日期中获取年龄。 这是查询:

User.in(gender: gender_group).between(dob: 18..30)

假设用户是 30 岁,如果他还没有庆祝他的 31 岁生日,你的逻辑如下:

today = Date.today
 => Mon, 07 May 2018

aged_30 = today - 31.years + 1.day
 => Fri, 08 May 1987

aged_18 = today - 18.years
 => Sun, 07 May 2000

User.in(gender: gender_group).between(dob: aged_30..aged_18)