我正在使用where语句来提取一些条件的记录。
目前它看起来像这样:
humans.where("? <= created_at AND created_at <= ?", value.days.ago.beginning_of_day, value.days.ago.end_of_day)
我想知道在没有无效的情况下我可以将它扩展到哪里:
humans.where("? <= created_at AND created_at <= ? AND subscribed = ? AND provider != ?", value.days.ago.beginning_of_day, value.days.ago.end_of_day, true, 'twitter')
这还能用吗?像Postgres这样的查询是否兼容?
答案 0 :(得分:0)
在查询中添加另一个AND
子句是完全正常的。这应该工作。我喜欢rails语法,所以我将可以使用rails语法的部分分开到一个单独的部分:
humans.where("? <= created_at AND ....", value.days.ago.beginning_of_day, true, 'twitter')
.where(subscribed: value.days.ago.end_of_day)
事实上,如果你更喜欢这种语法,你可以将更多的查询转换为它(大概就是这样):
humans.where(Human.arel_table[:created_at].gteq(value.days.ago.beginning_of_day))
.where(Human.arel_table[:subscribed].lteq(value.days.ago.end_of_day))
.where(subscribed: true)
.where(provider: 'twitter')