2009-07-18 79 views
0

我有一個產品模型設置,我試圖用思維獅身人面像搜索。該模型具有一個稱爲狀態的屬性,該屬性在指定的日期可以是活動的,不活動的或活動的。在思維獅身人面像索引計算字段的搜索條件

我希望能夠將我的搜索結果限制爲活動的產品。即在日期中具有活動狀態或活動狀態,並且當前時間在這些日期之間。

我是Rails的初學者,所以我正在尋找關於如何實現這一點的建議。我想在我的模型中加入一個布爾方法來計算這個邏輯,但我認爲這不是由Sphinx索引的。

我正在使用MySQL作爲數據庫服務器。

有沒有人有任何明智的想法?

+0

我只是在想,解決這個問題的一種方法是創建一個名爲is_active的額外字段,並且每晚都有一個cron作業運行,並且如果狀態處於活動狀態或當前時間在指定日期之間,則將該字段設置爲true否則將其設置爲false。我想我還需要重寫模型中的保存命令,以便在更新中更改其狀態時,對各個產品執行相同的操作。 – Caps 2009-07-18 02:30:46

回答

4

你是對的,你的模型上的ruby方法不能訪問獅身人面像。但是,您可以將該方法重新創建爲sphinx屬性。這些可以很容易地使用SQL片段像這樣製成:

class Person < ActiveRecord::base 
    ... 


    define_index do 
    has "status = 'active' and now() > start_date and now() < end_date", :as => :active, :type => :boolean 
    end 

    ... 
end 

使用字符串來指定字段或屬性這樣相同構建SQL查詢時指定自定義列。

+0

非常感謝!看起來它會起作用。 – Caps 2009-07-19 22:36:33

0
+0

感謝您的資源 - 這些都非常棒! – Caps 2009-07-19 22:37:48

相關問題