在rails中构建多个过滤器的最佳方法

时间:2011-09-28 09:16:35

标签: ruby-on-rails ruby filter

我想为我的一个模型构建带有rails的动态过滤器,但我不知道最好的方法。

我的模型是事件女巫有大陆国家

所以我希望能够找到一个包含多个过滤器的事件。例如,“在二月份的欧洲发现所有事件”

最好的方法是什么?我必须在我的Event模型中创建一个函数 findByfilter 吗?

感谢您的回答,欢迎举例!

(我使用rails 3)

1 个答案:

答案 0 :(得分: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方法(或者如果您愿意,可以使用其他名称)来查看已设置的搜索属性,并构建一个很好的字符串来描述它。