2014-02-17 2 views
1

У меня есть список вопросов с разными позициями и группами вопросов ids
как бы найти все вопросы с одним идентификатором и выбрать один с самым большим номером позиции.рельсы 3 поиск и заказ по двум полям

это близко

<%= @question = Question.maximum('position', :conditions => {'question_group_id' => question_group_id'}) %> 

с использованием любого из ответов я получаю

#<Question:0x3fe85c0> 

как я поворачиваю, что в чем-то мы можем прочитать

+0

Принять один ответ, который подходит в качестве решения для Вашего вопроса?. –

ответ

0

Прежде я вижу erb тег (<% %>) и операцию, выполнение будет лучше на геймпаде.

Теперь запрос (в контроллере) должны быть

@question = Question.where(question_group_id: question_group_id). 
    order("position desc"). 
    limit(1). #because you only need one record! 
    first 
+0

Просто делать. Сначала без ограничения будет просто получить первую запись. Вам не нужен .limit (1) –

0

Вы можете сделать это с помощью следующего запроса . Это будет вызывающе работать на вас.

@question = Question.where('question_group_id = ?',question_group_id).order("position desc").first 
0
@question = Question.where(:question_group_id => question_group_id).order("position desc").first 
0

Прежде всего, я хотел бы поставить запрос на модели в качестве названного объема, а не в контроллере.

Учитывая, что, на Ваш вопрос модели:

scope :highest_position_by_question_group_id, lambda { |question_group_id| 
    where(question_group_id: question_group_id).order('position DESC').first 
} 

И на вашем контроллере:

@question = Question.highest_position_by_question_group_id(question_group_id) 
Смежные вопросы