ActiveRecord或查询日期范围

时间:2016-04-05 07:36:29

标签: ruby-on-rails activerecord

我试图获取具有“来自”或“'”的书籍的ActiveRecord对象。在日期范围(start_date..end_date)之间。

这段代码很好用:

Book.where(from: start_date..end_date)

但我想使用'或'在我的陈述中,这段代码失败了:

Book.where("from: ? OR to: ?", (start_date..end_date), (start_date..end_date))

请帮我找错。

3 个答案:

答案 0 :(得分:1)

你可以试试这个 -

Book.where("books.from BETWEEN ? AND ? OR books.to BETWEEN ? AND ?", start_date,end_date,start_date,end_date)

答案 1 :(得分:1)

检查范围条件Rails guides

Client.where(created_at: (Time.now.midnight - 1.day)..Time.now.midnight)

这将产生以下SQL:

SELECT * FROM clients WHERE (clients.created_at BETWEEN '2008-12-21 00:00:00' AND '2008-12-22 00:00:00')

所以你可以使用or in ActiveRecord in the Rails 5,你可以做

Book.where(from: start_date..end_date).or(Book.where(from: new_start_date..new_end_date))

注意:您不需要使用rails 5来使用此OR查询。我们也可以将它与rails 4.2一起使用,感谢gem where-or

答案 2 :(得分:0)

collaboratingAssembliesForClass:withCollaboratorClasses: