rails как получить следующий запрос в rails

#ruby-on-rails #ruby #ruby-on-rails-4 #ruby-on-rails-3.1

#ruby-on-rails #ruby #ruby-on-rails-4 #ruby-on-rails-3.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')
  

Я пытался:

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

Ответ №1:

Для использования условий в where инструкции, пожалуйста, обратитесь к документации «Условия«.

Попробуйте это:

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

Ответ №2:

Используя цепочку ActiveRecord и условия массива, вы можете сделать что-то похожее на:

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

Комментарии:

1. При цитировании из другого источника действительно важно предоставить надлежащий кредит.

2. конечно, @theTinMan вы правы! я был немного стеснен во времени. обновлено.