В настоящее время я изучаю, как использовать Ruby on Rails с The Odin Project, и сейчас я занимаюсь созданием форм. Я пытаюсь вытащить уникальные даты из моей базы данных, чтобы заполнить окно раскрывающихся списков для проекта. Я использую form_for
в моем представлении, и я использую функцию select
, которая принимает массив массивов, т.е. [[«вариант один», 1], [«вариант два», 2]] и т. Д. Идея заключается в том, что только уникальные даты которые находятся в базе данных, должны отображаться в параметрах. Моя проблема заключается в том, что повторяющиеся даты продолжают отображаться, например.Выбор отдельных дат
03/03/2016
03/03/2016
04/03/2016
05/03/2016
06/03/2016
06/03/2016
Использование find_by_sql Я попытался
SELECT DISTINCT start FROM flights
безрезультатно. После быстрого поиска Google я попробовал
SELECT start FROM flights GROUP BY start
но я все еще получаю дубликаты. Я не лучший с SQL, поэтому любая помощь будет оценена по достоинству.
редактировать:
Моя колонка datatime имеет временную составляющую, так что, вероятно, вопрос
Из схемы БД вот моя таблица полетов, если это любая помощь
create_table "flights", force: :cascade do |t|
t.integer "from_airport_id"
t.integer "to_airport_id"
t.datetime "start"
t.integer "flight_duration"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
(1) Что такое тип данных 'start'? (2) Какую базу данных вы используете? Наиболее вероятная проблема заключается в том, что 'start' имеет компонент времени, и вам нужно просто извлечь дату (или отформатировать результат, чтобы вы увидели компонент времени). –
Вы имеете в виду, что 'SELECT DISTINCT' возвращает повторяющиеся строки? Очень странно. Разве что весь выбор?!? – jarlh
@gordonlinoff В Rails он просто говорит datetime, но он включает компонент времени. Вероятно, это проблема, я попробую форматировать, чтобы получить часть времени, хотя я не уверен, как это сделать. Я проверю google! – SkipCloud