Я только начинаю учиться использовать Rails и иметь значительный опыт работы в Django. Я пытаюсь преобразовать довольно общий запрос в Rails ORM, но не может найти хорошую ссылку на независимое от базы данных решение.Сравнение года и месяца в Rails ORM
Что я хочу сделать, это сравнить дату или месяц в поле created_at с текстом, отправленным с URL-адреса. В Django это просто: я не могу найти простой базы данных независимого решение, чтобы сделать то же самое в Rails
if kwargs.get('year', False):
# Filter by year
post_list = Post.objects.filter(posting_date__year = kwargs['year'])
# Futher filter by month if applicable
if kwargs.get('month', False):
post_list = post_list.filter(posting_date__month=kwargs['month'])
. Обратите внимание, что я подчеркиваю независимую базу данных ; Я могу, конечно, написать свой собственный SQL для этого, но я твердо верю в абстракции кода и базы данных.
rails activerecord/activerelation (ORM) - это «просачивающаяся» абстракция вокруг sql, вы должны иметь возможность оставаться «независимой от базы данных», но часто будете использовать фрагменты sql, то есть «Post.where» («title LIKE?», # {params [: title_search]}% "). order (: title)' - что касается фильтрации столбцов datetime, вы можете прочитать это сообщение в блоге, которое я делал по часам - http://jessehouse.com/blog/2013/11/15/work-with-timezones-and-ruby-on-rails/- в зависимости от того, насколько точны ваши результаты – house9