2016-10-11 9 views
-1

레일에서 다음과 같은 출력을 얻을 필요가 있습니까?레일 레일에서 다음 쿼리를 얻는 방법

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 액티브 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

선적 서류 비치.

이 시도 :

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