加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails – 在.where查询中使用枚举

发布时间:2020-12-17 01:43:18 所属栏目:百科 来源:网络整理
导读:我在模型上使用枚举: 枚举状态:[:待定,:已批准] 我在模型中有一个唯一性验证,如下所示: validates :item_id,uniqueness: { scope: :user_id,conditions: - { where(status: :approved) },message: "You already have this item." } 这不起作用.只有当我
我在模型上使用枚举:

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

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

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读