2016-10-11 9 views
-1

レールで次の出力を取得する必要がありますか?railsレールで次のクエリを取得する方法

SELECT "booking_rooms".* FROM "booking_rooms" INNER JOIN "bookings" ON "bookings"."id" = "booking_rooms"."booking_id" WHERE "booking_rooms"."room_id" IN (22, 27, 21) AND ("bookings"."start_date" <= '2016-10-16' AND "bookings"."end_date" > '2016-10-12') 

は、私が試した: "Conditions" を参照してくださいwhere文で条件を使用してのために

BookingRoom.joins(:booking). 
    where(room_id: self.booking_rooms.map(&:room_id)). 
    where(bookings: { "start_date <= ? AND end_date > ?" }, self.start_date, self.end_date) 

答えて

2

:あなたがに似た何かを行うことができますArray-ConditionsのActiveRecord chainingとを使用して

BookingRoom.joins(:booking).where(room_id: self.booking_rooms.map(&:room_id), bookings: { start_date:self.end_date,end_date:self.start_date}) 
0

ドキュメンテーション。

このお試しください:それは適切なクレジットを提供することが重要です_really_別のソースから引用すると

BookingRoom.joins(:booking) 
     .where(room_id:self.booking_rooms.map(&:room_id) 
     .where(bookings: { "start_date <= :start_date AND end_date > :end_date" },start_date: params[:start_date], end_date: params[:end_date]) 
+0

を。 –

+0

確かに、@ theTinManあなたは正しいです!私は時間が少しタイトでした。更新しました。 – Nimir

関連する問題