在Rails项目中的一个模型中,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中使可枚举字段不区分大小写?
2条答案
按热度按时间yvgpqqbh1#
你的代码看起来很好,你可以通过在downcase_fields方法中添加调试器来检查控制台。或者你可以简单地添加验证检查:独特性:{区分大小写:假}
6uxekuva2#
枚举不允许设置不是原始可接受集之一的任何值。例如,如果这是模型中字段的设置方式
尝试
status = :Active
甚至不会设置该字段。我唯一能做的是通过setter(当值被设置时)