Лучшее слово - сделать область вместо попытки использовать динамический поиск.Вы можете создать год и область действия и использовать его
scope :year, lambda { |year| { ['thedate > ? AND thedate < ?', DateTime.now.change(:year => year).beginning_of_year, DateTime.now.change(:year => year).ending_of_year] }
Вы можете использовать X.year(2012)