Sunspot:Model.searchコードをどこに置くのですか?

ユーザーモデルを検索可能なものとして定義しました。

class User < ActiveRecord:Base
    searchable do
        #...
    end
end

さて、私は実際に検索呼び出しを行うための最良の場所は何ですか?

User.search do
    keywords kw
    # insert a toooon of with, facets etc...
end

私はコントローラにこの巨大なブロックを持つことを望んでいません。 私はドレープ(デコレータパターンを実装しています)を使用していますが、実際にはモデルに結合されているため、それが最高の場所だとは思わない。またはそれは?

私はSearchクラスを作成して、何かのようにするべきですか?

@search = Search::UserSearch(params)

コントローラーで?

ありがとう!

ベストアンサー

これをSearch ::
UserSearchクラスに入れることをお勧めします。懸念を分離し、単一の責任原則に従うことは、常に良いアイデアです。

あなたはこのクラスを

app/models/search/user_search.rb

(自動ロードパスに検索ディレクトリを追加することを忘れないでください)

それにもかかわらず、私は私のプロジェクトの一つでこれをやっていて、私はそれに満足しています。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です