我试图获取具有“来自”或“'”的书籍的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))
请帮我找错。
答案 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: