例如,我有索引操作:
def index
if params[:query]
@pharmaceutics = Pharmaceutic.where("name LIKE ?", params[:query])
elsif params[:code]
@pharmaceutics = Pharmaceutic.where("barcode LIKE ?", params[:code])
else
@pharmaceutics = Pharmaceutic.all
end
end
当我发送两个参数:代码和查询时,我想使用它们来过滤我的药剂。我有MySQL数据库。
答案 0 :(得分:4)
我可能会使用scoped
方法,如下所示:
def index
scope = Pharmaceutic.scoped # Pharmaceutic.all if you use Rails 4
scope = scope.where('name LIKE ?', params[:query]) if params[:query].present?
scope = scope.where('barcode LIKE ?', params[:code]) if params[:code].present?
@pharmaceutics = scope
end
您也可以编写自定义作用域并将where(...)
替换为它们,以使代码更清晰。