我有一個Rails應用程序Content
模型。內容模型有許多STI兒童模型,例如Announcement
,,FAQ
等。我需要能夠通過Sunspot爲每個孩子獨立和作爲一組查詢Solr。太陽黑子搜索Rails的單表繼承
這是目前內容模型中太陽黑子搜索的實現。它設置默認爲隱藏,並對外公佈,只有活動的內容是由Solr的返回和接受block
允許更遠搜索PARAMS:
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)
進行搜索)。
是否有方法可以反映類方法的類,或者是否必須在運行時動態生成此方法以預定義調用類?