3つのパラメーターの場所、またはクエリ文字列のstarts_atまたはends_atに応じてイベントをフィルター処理するイベントアプリケーションに取り組んでいます。クエリ文字列には、1つ、2つ、またはすべてのパラメータを含めることができます。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
ただし、このコードは、クエリが配列で機能しないため機能しません。誰かが私にこれに対するいくつかの解決策を提案できますか?