2015-03-13 4 views
0

Попытка найти уникальные месяцы и годы из поля даты в таблице (not created_at или updated_at) и использовать эти значения для заполнения двух полей выбора, из которых пользователь может выбрать, какие годы и/или месяцев, о которых они хотят сообщить. По сути, я только хочу представить пользователю те годы и месяцы, для которых есть записи. Я использую Postgresql как свой db.Найдите уникальные месяцы и годы с даты

настоящее время я получаю значения, используя этот код в мой контроллер:

@list_of_years = @subset.pluck(:usg_date).map{|y| y.year}.uniq.sort 
@list_of_months = @subset.pluck(:usg_date).map{|m| m.month}.uniq.sort 

Это работает в той мере, это дает мне значения, но не в том формате, я хочу, и я не могу понять как их использовать для заполнения полей выбора. Например, для месяца, я хочу показать январь, февраль, март, а не 1, 2, 3 и т.д.

ответ

0

Попробуйте это:

Model.select("created_at").map{ |i| i.created_at.year }.uniq

Чтобы получить название месяца использования вы должны использовать Date::MONTHNAMES (First Вам может понадобиться require 'date') Например:

LeaveSystem.select("created_at").map{ |i| Date::MONTHNAMES[i.created_at.month] }.uniq 

РЕЗУЛЬТАТ: ["December", "February", "March"]

+0

Это дало мне месяцы и годы, с несколькими изменениями '@list_of_years = Usage.select (: usg_date) .map {| i | i.usg_date.year} .uniq и @list_of_months = Usage.select (: usg_date) .map {| i | Дата :: ABBR_MONTHNAMES [i.usg_date.month]} .uniq' Однако месяцы сортируются неправильно (по календарному заказу). Если я добавляю сортировку, они сортируются по алфавиту. – Kurtismonger

Смежные вопросы