2015-04-10 3 views
0

У меня есть два разных активных запроса записи, которые я объединяю в один запрос. Запросы состоят из двух разных таблиц и имеют разные имена столбцов. Как только я объединю два запроса вместе, я хочу иметь возможность сортировать его как одну из строк, содержащих дату. Однако в «Query1» дата называется startdate. В «Query2» дата называется start_at. Я надеялся, что сможет использовать псевдоним select для Query1, чтобы вернуть startdate как start_at, но, проведя два дня, изнуряя эту опцию без разрешения (видимо, выберите, как не работает), я надеюсь, что есть способ сортировки объединенные запросы, не имеющие необходимости писать мой собственный метод сортировки.Ruby on Rails - объединить и отсортировать два разных запроса activerecord

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

@Query1 = Course.select(:id,:city,:start_date).where(...) 
@Query2 = Workshop.select(:id,:topic,:starts_at).where(...) 

@CombinedQuery = Query1 + Query2 

Я хочу, чтобы отсортировать @CombinedQuery так, что даты имеют порядок возрастания, но таким образом, что результаты Query1 и Query2 сортируются вместе. Есть ли простой способ сделать это?

Спасибо!

ответ

1

Чтобы отсортировать в Ruby, вот так:

@CombinedQuery.sort_by do |record| 
    if record.respond_to? :startdate 
    record.startdate 
    elsif record.respond_to? :starts_at 
    record.starts_at 
    end 
end 

Побочного Примечание: Если вы хотите следовать соглашениям рубина именования, то вы должны переименовать @Query1 и @Query1 в нижнем регистр @query1 и @query2 соответственно. следует заменить на snakecase @combined_query

+0

Спасибо! Это прекрасно работало! – user3461645

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