繁体   English   中英

Rails - 枚举不区分大小写

[英]Rails - Enumerize case insensitive

在我的 Rails 项目中的 model 中,一个字段与 Enumerize 一起使用,如下所示:

enumerize :status, in: %i[draft active], default: :active

如果我使用“active”作为输入,它会起作用,但是“ACTIVE”会给出一个包含错误。

我试图通过注册一个 before_validation 回调来解决这个问题

before_validation :downcase_fields

def downcase_fields
  status.downcase! if status.present?
end

但这也行不通。

如何在 Rails 中使可枚举字段不区分大小写?

您的代码看起来不错,您可以通过在 downcase_fields 方法中添加调试器来检查控制台。 或者您可以简单地添加验证检查:uniqueness: {case_sensitive: false}

Enumerize 不允许设置任何不是原始可接受集合之一的值。 例如,如果这是在 model 中设置字段的方式

enumerize :status, in: %i[draft active], default: :active

尝试status =:Active甚至不会设置该字段。

我唯一能做的就是通过设置器(设置值时)

  def status=(value)
    super(value&.downcase)
  end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM