在我的 Rails 应用程序中,我需要通过表中的某个字段进行搜索,但主要问题是我必须这样做:如果我在视图 A 中选择了选择字段,我必须仅按 A 条件搜索,如果 A 和 B 都按A和B ...现在我有:
控制器
@pre_oils = Oil.by_brand(params[:oilbrand]).by_oiloiliness(params[:oiloiliness]).by_structure(params[:oilstructure]).by_size(params[:oilsize])
模型
def self.by_oiloiliness(oiloiliness)
if oiloiliness
where("description LIKE ?", "%#{oiloiliness}%")
else
scoped
end
end
def self.by_brand(brand)
if brand
where("manufacturer LIKE ?", "%#{brand}%")
else
scoped
end
end
def self.by_structure(structure)
if structure
#where("structure LIKE ?", "%#{structure}%")
where("description LIKE ?", "%#{structure}%")
else
scoped
end
end
def self.by_size(size)
if size
where("capacity LIKE ?", "#{size}")
else
scoped
end
end
但它正在搜索非常非常奇怪,一次是工作,另一次没有......什么是坏的?以及如何仅按这些字段进行搜索,这些字段是在视图中选择的?
(也是 ruby 1.9.3 rails 3.2.8)
也许在所有查询中使用 find 获取然后拆分它们并删除重复项?
更新
oil = Oil.brand_like(params[:oilbrand])
oil = Oil.description_like(params[:oiloiliness])
oil = Oil.description_like(params[:oilstructure])
oil = Oil.capacity_eq(params[:oilsize])
更新2
@pre_oils = Oil.search(:manufacturer_like => params[:oilbrand], :description_like => params[:oiloiliness], :description_like => params[:oilstructure], :capacity_eq => params[:oilsize])