正如标题所说,例如,我们有一个包含两个表Books
和RentalRecord
的库系统,它们具有一对多的关系。它看起来像
Book1
--name
--RentalRecords
----record11
----record12
Book2
--name
--RentalRecords
----record21
----record22
----record23
----record24
每条记录包含2个时间戳,用于租用日期和返回日期
我想查询过去两周内没有租借过的图书。 我是Ruby的新手,在没有使用多个查询的情况下无法想到任何方法。
答案 0 :(得分:0)
有时使用两个查询是可行的选择。如果您更喜欢构建单个查询,请使用
行 Book.joins(:rental_records)
.where("max(rental_records.created_at) < ?", 2.weeks.ago)
注意事项:
where
语句中使用纯字符串如果您的查询失控或者您不喜欢使用类似的纯SQL字符串,那么请查看gem squeel。它为Ruby on Rails提供了一个成熟的SQL代数。
HTH