レール3.2.3とルビー1.9.3を使用したRoR初心者
現在、2つのdate_timesでユーザーが選択した日付に一致するホテルの空室状況を表示しようとしています。
scope :by_availabilities, lambda { |first_day, last_day|
joins(:rooms).
joins('INNER JOIN availabilities ON rooms.id=availabilities.room_id').
where(get_my_where(first_day, last_day)).
group('hotels.id'<other fields>
}
def self.get_my_where(first_day, last_day)
difference = (last_day-first_day).to_i
condition = ""
if (difference==1)
condition = "availabilities.day = '#{first_day}'"
condition+=""
else
for i in 1..difference do
if(i==difference)
condition +="(availabilities.day = '#{first_day}' AND availabilities.availability > 0)"
else
condition+="(availabilities.day = '#{first_day+i}' AND availabilities.availability > 0) AND "
end
end
end
--other innerjoins--
first_dayは開始日、last_dayは終了日であり、どちらも正しく宣言されており、正しい日付形式になっています。
パラメータを正しく渡しています。問題は、たとえば今日のイン日付と明日のアウト日付を選択した場合にのみ、正しい検索結果が得られることです。その間にさらに日数を入れると、その日のDBに可用性があるにもかかわらず、検索結果がまったく表示されません。
これはこれを実行する方法ではありませんか?内部結合が多く、「醜い」状態になっていたため、この検索をコントローラーに配置できません。これを実装するまで、他のフィルターによるすべての検索は正しく機能していました。
前もって感謝します