Даже если ваш date_of_birth
тип дата данных, можно по-прежнему на основе DateTime
или просто Time
.
Таким образом, вы можете выполнить поиск в вашем Пользовательском модемом, где день рождения составляет пользователю не менее 4 лет. Это учитывало бы не только год их рождения, но и месяц и день.
2.3.1 :001 > User.where('birthday < ?', DateTime.now - 4.years).size
(0.6ms) SELECT COUNT(*) FROM `users` WHERE (birthday < '2012-05-27 13:51:49.162909')
=> 51
Здесь вы можете видеть, что атрибут дня рождения в моем примере является типом данных даты, а не временем.
2.3.1 :003 > User.where('birthday < ?', DateTime.now - 4.years).first.birthday
User Load (0.8ms) SELECT `users`.* FROM `users` WHERE (birthday < '2012-05-27 13:52:09.802729') ORDER BY `users`.`id` ASC LIMIT 1
=> Mon, 02 May 1960
'Time.now - 4.years => 2012-05-27 9:44:27 -0400' – kobaltz
вопрос с date_of_birth.year, не давая мне получить год date_of_birth. –