2016-05-18 62 views
0

如標題所示,例如,我們有一個帶有兩個表格BooksRentalRecord的圖書館系統,具有一對多關係。它看起來像根據子集合的最大值查詢記錄

Book1 
--name 
--RentalRecords 
----record11 
----record12 
Book2 
--name 
--RentalRecords 
----record21 
----record22 
----record23 
----record24 

每個記錄包含租用日期2個時間戳和返回日期

,我想查詢,在過去的2幾周沒有租出去的書籍。 我是Ruby新手,想不到使用多個查詢的方法。

+0

請爲'Books'和'RentalRecord'顯示模型和表格定義(來自遷移)。 –

+0

這夠好嗎? – Pita

+0

不是這樣。您需要發佈'app/book.rb'和'app/rental_record.rb'文件的內容,以及'db/migrate'中的包含':books'和''books''的'create_table'調用的遷移, :rental_record'。 –

回答

0

有時使用兩個查詢是一個可行的選擇。如果你喜歡構建一個查詢,使用的東西沿着

Book.joins(:rental_records) .where("max(rental_records.created_at) < ?", 2.weeks.ago)

東西線要注意:

  • 你需要加入需要的表明確(但協會名稱)
  • 您可以在Rails中使用純字符串where聲明
  • 您可以將Ruby值綁定到此類字符串中的問號

如果您的查詢失控或者您不喜歡使用這種普通的SQL字符串,請查看gem squeel。它爲Ruby on Rails提供了完備的SQL代數。

HTH

+0

我同意邁克爾的看法,認識更多關於你的代碼的知識將有助於提出一個完美契合的答案。將'db/schema.rb'添加到購物車:) – Raffael