use*_*963 4 enums activerecord ruby-on-rails
我在模型上使用枚举:
enum status: [:pending, :approved]
我在模型中有一个唯一性验证,如下所示:
validates :item_id, uniqueness: { scope: :user_id, conditions: -> { where(status: :approved) }, message: "You already have this item." }
Run Code Online (Sandbox Code Playgroud)
这不起作用.如果我改变它只会工作:approved到1.我很困惑,为什么我不能在这里使用状态名称,当我可以做类似的事情Item.first.update_attributes(status: :approved),它工作正常.
Gus*_*bio 13
使用模型中的枚举值,如下所示:
where(status: Model.statuses[:approved])
而不仅仅是符号.这样enum helper方法statuses将传递enum 的整数值,这将使过滤器工作.枚举值实际上作为整数存储在DB中,而不是符号的字符串表示形式.
| 归档时间: |
|
| 查看次数: |
2817 次 |
| 最近记录: |