gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:30:16 25 4
gpt4 key购买 nike

我在模型上使用枚举:
enum status: [:pending, :approved]
我在模型中有一个唯一性验证,如下所示:

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

这不起作用。只有当我更改 :approved 时才有效至 1 .我很困惑为什么当我可以做类似 Item.first.update_attributes(status: :approved) 的事情时我不能在这里使用状态名称它工作正常。

最佳答案

使用模型中的枚举值,如下所示:
where(status: Model.statuses[:approved])
而不仅仅是符号。这样 statuses 的 enum 辅助方法将传递枚举的整数值,这将使过滤器工作。枚举值实际上作为整数存储在 DB 中,而不是作为符号的字符串表示形式。

关于ruby-on-rails - Rails - 在 .where 查询中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com