Как я могу сделать переходный атрибут доступным в динамических поисках?

У меня есть модель X с атрибутом thedate типа datetime.

Каков наилучший способ сделать год для динамического поиска?

Примеры:

X.find_by_year(2012)
X.find_by_location_and_year('here', 2012)
X.find_by_year_and_name(2012, 'name')
X.find_all_by_year(2012)
...

До сих пор я нашел этот подход с пользовательским поиском, но, видимо, это потребовало бы реализовать каждый желаемый метод вручную. Я хочу избежать этого.

1 ответ

Лучшее слово - сделать область вместо попытки использовать динамический поиск. Вы можете создать область действия и область применения и использовать ее

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)

Другие вопросы по тегам