2011-09-28 43 views
5

我想爲我的一個模型構建帶有軌道的動態過濾器,但我不知道最佳方式。在軌道中構建多重過濾器的最佳方法

我的模型是連接事件女巫有大陸,一個國家

所以我想能夠找到一個事件與幾個過濾器。例如,「找到2月份歐洲的所有事件」

要做到這一點的最佳方法是什麼?我必須在我的事件模型中創建一個函數findByfilter

謝謝你的回答,例如歡迎!

(我用的導軌3)

回答

4

我猜你正在尋找的是一個有點出乎只是用scope創建過濾器:

class Event < ActiveRecord::Base 
    scope :by_continent, lambda {|continent| where(:continent => continent)} 
    scope :by_country, lambda {|country| where(:country => country)} 
    ... 
end 

,然後做Event.by_continent('NA').by_country('Canada')

如果您希望建立一個更正式的搜索模型,並使用機制來建立to_s並描述你的搜索,我可能會從Railscast 111開始。他建立了一個高級搜索模型,它基本上可以讓你設置字段,然後根據設置的內容進行過濾。

由此,您可以實現自己的to_s方法(或其他名稱,如果您願意的話),它將查看已設置的搜索屬性,並構建一個很好的字符串來描述它。

+0

是的,你說得對,我用那個 – Sebastien