【问题标题】:Write activerecord query in rails在 Rails 中编写 activerecord 查询
【发布时间】:2017-07-26 11:00:46
【问题描述】:
我有一个带有pickup_date、delivery_date 和status 的“订单”模型。
所以我想选择订单-
- 如果状态是picked_up 那么pickup_date 应该是某个日期值
(eg, '12/12/2012')
- 如果状态为已交付,则delivery_date 应为某个日期值
(eg, '12/12/2012')
我认为我们可以将WHEN CASE 与 Activerecord 一起使用。有人可以帮我吗?
【问题讨论】:
标签:
mysql
ruby-on-rails
ruby
postgresql
activerecord
【解决方案1】:
Order.where("(status = 'pickup_up' AND pickup_date = :date) OR (status = 'delivered' AND delivery_date = :date)", date: Date.today)
在 Rails 5 中,您实际上已经可以对 ActiveRecord 关系使用 'or' 方法:
Order.where(status: :picked_up, pickup_date: Date.today).or(Order.where(status: :delivered, delivery_date: Date.today))
【解决方案3】:
Order.where(status: :picked_up).update(:pickup_date '12/12/2012')
Order.where(status: :delivered).update(:delivery_date '12/12/2012')