モデルを含むRailsアプリがありContent
ます。コンテンツ モデルには、、 、 などの多数のSTI子モデルがあります。Sunspotを介して Solr に各子を個別に、またはグループとしてクエリできるようにする必要があります。Announcement
Story
FAQ
これは 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)
)。
クラスメソッドのクラスを反映する方法はありますか、または呼び出し元のクラスを事前定義するために、実行時にこのメソッドを動的に生成する必要がありますか?