我需要建立一个具有多个条件的搜索。其中两个主要如下:城市和州以及邮政编码。反过来,我还有其他布尔属性,例如 has_transportation、available_for_work 等。我面临的问题是我想让我的搜索灵活。这意味着,对于布尔属性,用户可以选择 Either。总共有六个布尔属性以及基于 zip 或城市和州的搜索。
在我看来,我正在考虑多个条件语句,但这似乎不是 Rails 方式或完成此搜索的最有效方式。有人可以就如何解决我的问题提供建议吗?
更新:
样本方案
t.integer "zip_code", :null => false
t.boolean "availability", :default => true
t.integer "travel_distance", :default => 0
t.boolean "transportation", :default => false
t.boolean "insurance", :default => false
t.boolean "tools", :default => false
t.boolean "employee", :default => false
t.boolean "subcontractor", :default => false
t.string "city"
t.string "state"
输出:返回的结果将是零个或多个帐户
这是我将要使用的示例:
scope :tools, lambda { |arg| arg.blank? ? where("tools = ? OR tools = ?", true, false) : where(:tools => arg)}