Rails where.not,包含具有nil属性的记录

时间:2018-04-23 12:01:01

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我有一个Order模型,其属性为skip_reason。我想列出除skip_reasonfull以外locked的所有订单。 我正在使用where.not,但它不会返回nil列上skip_reason的订单。

我想出了以下条件,

> orders.pluck(:skip_reason)
=> ["locked", nil, nil, "unavailable", nil, nil, "locked", nil, nil, "full"]

> orders.where.not(skip_reason: ["full", "locked"]).pluck(:skip_reason)
=> ["unavailable"]

那么如何列出nilskip_reason值的订单?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

在rails 4中试过这个并且似乎有效。这对你好吗?否则我认为你应该使用原始SQL来获取where子句

orders.where(skip_reason: [nil, "unavailable"])