0

ActiveRecord では、結合してから注文できないことを知りました。これは pg_search の full_text_search メソッドにも当てはまるようです。たとえば、これは私が期待する順序には当てはまりません。

self.full_text_search(search_params).where(where_string).order(order_string).page(page_number).per(items_per_page)

後で sort_by する必要がありますか? 私は基本的に order_array を ["question ASC", "answer DESC"] のように利用できますが、もっと良い方法があるに違いありません。

4

1 に答える 1

1

後で並べ替えることができます。ページネーション時に配列として処理する必要があります。

order_array = ["question ASC", "answer DESC"]
search_results = self.full_text_search(search_params).where(where_string)

begin
 order_array.reverse.each do |s|
   s_array = s.split
   s_by = s_array[0]
   s_order = s_array[1]
   search_results.to_a.sort!{ |x,y|
     if s_order.present? && s_order.downcase == 'desc'
       y[s_by] <=> x[s_by]
     else
       x[s_by] <=> y[s_by]
     end
   }
 end
 search_results = Kaminari.paginate_array(search_results).page(page_number).per(items_per_page)
rescue => e
 logger.error "Failed to sort results of full text search: #{e.message}"
 search_results.page(page_number).per(items_per_page)
end
于 2014-10-30T17:37:34.537 に答える