ruby-on-rails Rails -枚举不区分大小写

5ssjco0h  于 2023-01-22  发布在  Ruby
关注(0)|答案(2)|浏览(107)

在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中使可枚举字段不区分大小写?

yvgpqqbh

yvgpqqbh1#

你的代码看起来很好,你可以通过在downcase_fields方法中添加调试器来检查控制台。或者你可以简单地添加验证检查:独特性:{区分大小写:假}

6uxekuva

6uxekuva2#

枚举不允许设置不是原始可接受集之一的任何值。例如,如果这是模型中字段的设置方式

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

尝试status = :Active甚至不会设置该字段。
我唯一能做的是通过setter(当值被设置时)

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

相关问题