我正在开发一个事件应用程序,我想根据查询字符串中的 3 个参数location 或 starts_at 或 ends_at过滤事件。查询字符串中可以有任何一个、两个或所有参数。在我使用if-else语句时,我需要创建 6 个案例,这会使我的代码变得笨拙。相反,我正在考虑以这种方式实现一些东西:
class EventsController < ApplicationController
def index
unless params.empty?
unless params[:location].nil?
@events = Event.where("location = ?", params[:location])
end
unless params[:starts_at].nil?
unless @events.empty?
@events = @events.where("start_date = ?", params[:start_date])
else
@events = Event.where("Date(starts_at) = Date(?)", params[:starts_at])
end
end
unless params[:ends_at].nil?
unless @events.empty?
@events = @events.where("end_date = ?", params[:end_date])
else
@events = Event.where("Date(ends_at) = Date(?)", params[:ends_at])
end
end
end
end
end
但是此代码不起作用,因为where查询不适用于数组。有人可以为此建议我一些解决方案吗..