0

问题模型 has_many Answers。下面的行计算问题有多少答案,并根据 DESC 顺序中的答案数量对它们进行排序。所以,首先回答的问题最多。

@search = Question.find(:all,
                          joins: :answers,
                          select: ' "questions".*, count("answers".id) as answers_count', 
                          group: '"questions".id',
                          order: "answers_count DESC").ransack(params[:q])

@questions = @search.result

我也使用洗劫宝石。为了使 ransack 进行搜索,我需要将 .ransack(params[:q]) 添加到 @search 数组并在该数组上调用 result 方法。我虽然这可以工作,但它没有。

我可以用什么来洗劫开始搜索?

4

1 回答 1

1

您应该先洗劫,然后将其结果用于链接。

ransack_result = Question.ransack(params[:q]).result

@questions = ransack_result.find(:all,
                                 joins: :answers,
                                 select: ' "questions".*, count("answers".id) as answers_count', 
                                 group: '"questions".id',
                                 order: "answers_count DESC")
于 2013-08-26T13:41:42.883 回答