У меня есть модель AvailableSlot с атрибутом «max_attendees». AvailableSlot has_many BookedSlots.Как вы извлекаете записи на основе состояния дочерних элементов?
Ищу всех AvailableSlots, которые все еще доступны (где booked_slots меньше max_attendees ")
Я попытался
scope :with_capacity, -> { joins('LEFT OUTER JOIN booked_slots on booked_slots.available_slot_id = available_slots.id')
.group('available_slots.id').having("booked_slots.count < available_slots.max_attendees") }
и
#AvailableSlot.rb
def self.with_capacity
self.select{ |s| s.booked_slots.count < s.max_attendees }
end
, но эти возвращения массивов, и первый не может выполнить «.count», а второе решение не может выполнить «.limit (3)», потому что возвращаемые данные не являются активными записями.
последний вопрос: делать вещи, как,
AvailableSlot.joins(:booked_slots).where("booked_slots.length < ?, max_attendees)
Я не могу использовать .length, потому что это не столбец под booked_slots. Какой способ использовать этот формат .joins.where при использовании методов activerecord, таких как .count, .length и т. Д.?