0
我有一個模型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)
我不能使用。長度,因爲這不是在booked_slots列。在使用像.count,.length等activerecord方法時,使用這種.joins.where格式的方法是什麼?