Ruby on Rails中,.where如何用长尾词问句表达枚举查询?

2026-04-10 06:571阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计286个文字,预计阅读时间需要2分钟。

Ruby on Rails中,.where如何用长尾词问句表达枚举查询?

我在模型上使用枚举:枚举状态:[:待定,:已批准] 我在模型中有一个唯一性验证,如下所示:validates :item_id, uniqueness: { scope: :user_id, conditions: { where: { status: :approved } }, message: You already have an approved item with this ID }

我在模型上使用枚举:

枚举状态:[:待定,:已批准]

我在模型中有一个唯一性验证,如下所示:

validates :item_id, uniqueness: { scope: :user_id, conditions: -> { where(status: :approved) }, message: "You already have this item." }

这不起作用.只有当我改变时才会有效:批准为1.我很困惑,为什么我不能在这里使用状态名称,当我可以做类似于Item.first.update_attributes(状态::已批准)的东西时,它工作正常.

Ruby on Rails中,.where如何用长尾词问句表达枚举查询?

使用模型中的枚举值,如下所示:

where(status:Model.statuses [:approved])

而不仅仅是符号.这样,状态的枚举辅助方法将传递枚举的整数值,这将使过滤器起作用.枚举值实际上作为整数存储在DB中,而不是作为符号的字符串表示.

本文共计286个文字,预计阅读时间需要2分钟。

Ruby on Rails中,.where如何用长尾词问句表达枚举查询?

我在模型上使用枚举:枚举状态:[:待定,:已批准] 我在模型中有一个唯一性验证,如下所示:validates :item_id, uniqueness: { scope: :user_id, conditions: { where: { status: :approved } }, message: You already have an approved item with this ID }

我在模型上使用枚举:

枚举状态:[:待定,:已批准]

我在模型中有一个唯一性验证,如下所示:

validates :item_id, uniqueness: { scope: :user_id, conditions: -> { where(status: :approved) }, message: "You already have this item." }

这不起作用.只有当我改变时才会有效:批准为1.我很困惑,为什么我不能在这里使用状态名称,当我可以做类似于Item.first.update_attributes(状态::已批准)的东西时,它工作正常.

Ruby on Rails中,.where如何用长尾词问句表达枚举查询?

使用模型中的枚举值,如下所示:

where(status:Model.statuses [:approved])

而不仅仅是符号.这样,状态的枚举辅助方法将传递枚举的整数值,这将使过滤器起作用.枚举值实际上作为整数存储在DB中,而不是作为符号的字符串表示.