ruby-on-rails - Rails 首先或初始化选择多个枚举
问题描述
状态是一个枚举,我需要找到第一个用户waiting
或者declined
,如果不存在,初始化一个
下面的代码应该可以工作,但是给了我一个错误:
User.where(status: [:waiting, :declined]).first_or_initialize
=> ArgumentError ('[:waiting, :declined]' is not a valid 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
但没有一个工作。我该怎么做这个查询?
解决方案
要使其工作,请使用以下代码:
User.where(status: :waiting).or(User.where(status: :declined)).first_or_initialize({status: :waiting})
也许它不是最漂亮的代码,但它应该可以工作。
推荐阅读
- image-processing - ImageMagick v7 失真
- mysql - Spring JPA @Query with JPQL and MySQL FUNCTION CONVERT(col USING charset)
- c - 用户输入字符串(使用 fgets)中最后一个字符的 ASCII 值输出为 10,而预期值为 0
- c# - 更快地在列表中查找特定项目
- php - PHP:如何按键长度排序,然后按键 asc?
- java - REST API 中的 Jersey 多部分表单数据既不使用 web.xml 也不使用 ResourceConfig
- html - 按图像替换项目符号
- java - 如何在用户登录并想用新密码更改旧密码时验证用户
- html - 用 XSLT 替换尖括号
- angular - Angular 材质 sidenav 和扩展插入填充到左侧,为什么?