タイヤが初めてで、プロファイル モデルで DOB (誕生日) 列を検索する方法を理解しようとしています。
- age_from と age_to (たとえば 20 から 60 ) を設定できる単純な検索を構築してみてください。
- dob フィールドしかないので、これを行うにはどうすればよいですか?
- レコードの作成時に年齢を計算して列に保存し、それを Profile モデルに追加して検索をクリーンにする方がよいでしょうか?
これに対する最善のアプローチは何ですか?どうも
タイヤが初めてで、プロファイル モデルで DOB (誕生日) 列を検索する方法を理解しようとしています。
これに対する最善のアプローチは何ですか?どうも
モデルに dob フィールドがある場合は、次のようなクエリを実行できます。
Profile.where(:dob => date_from..date_to)
次のようなことを行うことで、クエリしようとしている年齢に基づいて事前date_from
に計算できますdate_to
Date.today-18.years
Date.today-24.years
スコープでそれを行うには、次のようにします。
scope :age_from, lambda { |age|
{ :conditions => ["profiles.dob >= ?", DateTime.now << (12* age)] }
}
scope :age_to, lambda { |age|
{ :conditions => ["profiles.dob <= ?", DateTime.now << (12* age)] }
}