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

Seb*_*ien 5 ruby ruby-on-rails filter

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

我的模型是事件女巫有一个大陆,一个国家一个月.

所以我希望能够找到一个包含多个过滤器的事件.例如,"发现二月份的欧洲所有活动"

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

谢谢你的回答,欢迎大家光临!

(我用轨道3)

Kri*_* PD 4

我猜您正在寻找的不仅仅是用于scope创建过滤器:

IE

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

然后做Event.by_continent('NA').by_country('Canada')

如果您希望构建一个更正式的搜索模型,并提供一种机制来to_s描述您的搜索,我可能会从Railscast 111之类的东西开始。他构建了一个高级搜索模型,基本上可以让您设置字段,然后根据设置的内容进行过滤。

由此,您可以实现自己的to_s方法(如果您愿意,也可以使用其他名称)来查看已设置的搜索属性,并构建一个漂亮的字符串来描述它。