Status是一个枚举,我需要找到第一个是waiting
或declined
的用户,如果不存在,则初始化一个
下面的代码应该可以工作,但给了我一个错误:
User.where(status: [:waiting, :declined]).first_or_initialize
=> ArgumentError ('[:waiting, :declined]' is not a valid status)
我认为这是因为status不能是符号数组。我也尝试过:
User.where(status: [:waiting, :declined]).first_or_initialize({ status: :waiting })
# And
User.where(status: [:waiting, :declined]).first_or_initialize do |user|
user.status = :waiting
end
但这两种方法都不起作用。如何执行此查询?
发布于 2019-03-27 01:04:04
要使其正常工作,请使用以下代码:
User.where(status: :waiting).or(User.where(status: :declined)).first_or_initialize({status: :waiting})
也许这不是最漂亮的代码,但它应该可以工作。
https://stackoverflow.com/questions/55362364
复制相似问题