0

私はかなりの調査を行いましたが、関連するものは何も見つかりませんでした。問題は、Users テーブルに DOB 列があることです。私の User モデルには、ユーザーの年齢を計算する age メソッドがあります。ユーザーの年齢を次のように表示できますcurrent_user.age。問題なく動作します。ただし、ユーザー モデルの属性ではないため、クエリで 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 に答える