2016-05-18 61 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