日付形式のbirth_date変数があります。以下に示すように、Date.todayと比較したいと思います。問題は、年も比較したいので、falseに戻っていることです。誕生日なので、birth_date(月と日)がDate.today.day.monthと等しいかどうかを確認しようとするだけで年は気になりません。
何か案は?
bdays = Soldier.find(:all, :conditions => ["birth_date LIKE ?", Date.today] )
日付形式のbirth_date変数があります。以下に示すように、Date.todayと比較したいと思います。問題は、年も比較したいので、falseに戻っていることです。誕生日なので、birth_date(月と日)がDate.today.day.monthと等しいかどうかを確認しようとするだけで年は気になりません。
何か案は?
bdays = Soldier.find(:all, :conditions => ["birth_date LIKE ?", Date.today] )
年を無視したいので、日付を分割する必要があります。SQLプロバイダーによって提供される関数のいくつかを使用する必要があります(以下の例ではMySQLを使用しています)。
bdays = Soldier.find(:all, :conditions => ["DAY(birth_date) = ? AND MONTH(birth_date) = ?", Date.today.day, Date.today.month])
SQLite(railsのデフォルトデータベース)を使用している場合、実際の日付型がないため、少し複雑になります。
bdays = Soldier.find(:all, :conditions => ["STRFTIME('%d', birth_date) = ? AND STRFTIME('%m', birth_date) = ?", Date.today.day, Date.today.month])
postgresを追加すると考えました:
Soldier.where("EXTRACT(DAY FROM birth_date) = ? AND EXTRACT(MONTH FROM birth_date) = ?", Date.today.day, Date.today.month)