簡體   English   中英

rails:無法選擇具有條件的關聯模型

[英]rails: can't select associated model with conditions

class Desk < ApplicationRecord
 has_many :reservations, dependent: :destroy
end

class Reservation < ApplicationRecord
 belongs_to :desk
end

我想把所有的桌子都放在一個沒有像這樣預定的日期:

@free_desks = desks.select{|desk| desk.reservations.where.not(date: date)}

因此,例如,當我有 8 張桌子並且在“2020-09-06”日期是在 Reservation 模型中保留的桌子(ID:1)作為條目時,我想拿回 7 張桌子。 但它不起作用。 有人可以幫我嗎?

謝謝你們

所以你想要所有沒有相應預訂的Desks?

嘗試這個:

Desk.left_joins(:reservations).where(reservations: {id: nil})

這是什么意思?

您可以將我們視為嘗試將兩個表連接在一起。 我們列出了所有對話 - 但其中一些不會有任何消息:ID 將為 nil。 我們想要獲取它們 - 因此我們使用“where”活動記錄查詢方法。

警告

您可能會收到一百萬條這樣的記錄——這可能會讓您不知所措。 如果您嘗試一次循環遍歷它們,請注意。

更新的問題:

date = Date.parse('january 5 2013')

Desk.left_joins(:reservations).where(reservations: {id: nil, date: date.beginning_of_day..date.end_of_day})

注意:這可能會假設 UTC 時間(假設您沒有更改任何默認設置)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM