如何解决将枚举值添加到Rails模型上的ruby,并将其默认为所有新模型实例
我在模型中定义了这样的枚举
enum status: { started: "started",passed: "passed",failed: "failed" }
我想为其添加值draft: "draft"
但是据我了解,我必须以某种方式进行迁移才能将其添加到数据库中。我该怎么办? 可能是个愚蠢的问题,请多多包涵,谢谢。
:编辑 感谢您的反馈
我还需要将新添加的枚举值设为所有新模型的默认值。这可能需要迁移,但是我将如何生成它?
解决方法
您可以将枚举值添加到列表中。
enum status: { started: "started",passed: "passed",failed: "failed",draft: "draft" }
如果枚举是一个数组,则必须确保仅将新值添加到数组的末尾,否则记录的状态将错误。
要使其成为新记录的默认值,我将在模型中而不是数据库中执行此操作...
class MyModel < ApplicationRecord
before_save :initialize_status
private
def initialize_status
self.status ||= 'draft' if new_record?
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。