1

モデルを含むRailsアプリがありContentます。コンテンツ モデルには、、 、 などの多数のSTI子モデルがあります。Sunspotを介して Solr に各子を個別に、またはグループとしてクエリできるようにする必要があります。AnnouncementStoryFAQ

これは Content モデルでの Sunspot 検索の現在の実装です。非表示および公開のデフォルトを設定するため、アクティブなコンテンツのみが Solr によって返されblock、さらに検索パラメーターを許可するa を受け入れます。

def self.search_for(&blk)
  search = Sunspot.new_search(Content)
  search.build(&blk)
  search.build do
    with :hidden, false
    with(:published_at).less_than Time.now
  end
  search.execute

  search
 end

このメソッドはコンテンツに対して完全に機能し、コンテンツとすべての子モデルの結果を返します。私はメソッドの名前に特に興奮していsearch_forませんが、それ以上のものは思いつきません。

子モデルで検索できるようにする必要がありますAnnouncement.search_for()。デフォルトが近い将来変更されるため、このメソッドを 10 個までの子モデルに貼り付けたくありません。私が望むのは、各子モデルがこのメソッドを継承するようにすることですが、子のクラスを検索するのではなくContent(たとえば、 でAnnouncement検索しますSunspot.new_search(Announcement))。

クラスメソッドのクラスを反映する方法はありますか、または呼び出し元のクラスを事前定義するために、実行時にこのメソッドを動的に生成する必要がありますか?

4

1 に答える 1