【问题标题】: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))
    

    【讨论】:

      【解决方案2】:

      除了@M。 Stavnycha 回答,Rails 有一个关于 ActiveRecord 查询界面的精彩部分,可在此处http://guides.rubyonrails.org/active_record_querying.html

      【讨论】:

        【解决方案3】:
        Order.where(status: :picked_up).update(:pickup_date '12/12/2012')
        
        Order.where(status: :delivered).update(:delivery_date '12/12/2012')
        

        【讨论】:

          猜你喜欢
          • 2017-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多