2016-05-31 4 views
0

は、これは私が持っているものです。変換::レスポンス::雷にレコード:: PaginatableArray

@parts = if params[:q].present? 
      Part.search(params[:q]).records 
     else 
      Part.find_by_params(params) 
     end 

条件が真@parts == Elasticsearch ::モデル::レスポンスを返す場合::それ以外の場合は@parts == Kaminari :: PaginatableArray

@partsで使用しているいくつかのメソッドは、条件がtrueの場合は機能しません(Elasticsearch :: Model :: Response :: Records)。

私はElasticsearch :: Model :: Response :: RecordsをKaminari :: PaginatableArrayに変換する方法はありますか?

答えて

1
@parts = if params[:q].present? 
      Kaminari.paginate_array(
      Part.search(params[:q]).records.to_a 
      ).page[params[:page]) 
      .per(10) 
     else 
      Kaminari.paginate_array(
      Part.find_by_params(params) 
      ).page(params[:page]) 
      .per(10) 
     end 

このような問題は2つの異なるタイプのメソッドを返すようにするのは一般的にはお勧めできません。しかし、の場合、には2つの違った違いが必要です。インターフェイスの微妙な違いを管理するためにアダプタクラスを導入すると便利です。

また、Elasticsearchは独自のページング機能を備えています。そのため、ページングパラメータを検索クエリに渡すことをお勧めします。

+0

私はこれは良い考えではないことを知っていますが、私はthis.Anywayアドバイスのようなものを実装する必要がありますアドバイスのために。 –

関連する問題