0

我做了很多研究,没有发现任何相关的东西。问题是我的用户表有一个 DOB 列。我的用户模型有一个计算用户年龄的年龄方法。我能够按如下方式显示用户年龄:current_user.age它工作得很好。但我不能在查询中使用年龄,因为它不是用户模型中的属性。其他网站(例如约会网站)如何提供按年龄过滤的选项?我无法想象他们在数据库中有一个年龄列,因为不断更新它会很痛苦。简而言之,如何根据用户提供的年龄范围过滤结果?

4

1 回答 1

2

假设您想查找年龄在 18 到 20 岁之间(包括今天)的用户,并且您将 DOB 存储在名为dob.

今天正好 18 岁的人将在 1995 年 4 月 6 日出生。而明天将满 21 岁的人将在 1993 年 4 月 7 日出生。

因此,您希望用户的出生日期介于 1993 年 4 月 5 日和 1995 年 4 月 6 日之间。

18.years.ago.to_date
=> Thu, 06 Apr 1995
(20.years.ago + 1.day).to_date
=> Mon, 07 Apr 1993

您现在可以使用它

User.where("dob >= ? AND dob <= ?", 20.years.ago + 1.day, 18.years.ago)
于 2013-04-06T14:15:27.210 回答