gpt4 book ai didi

ruby-on-rails - Rails 字符串不允许在数据库中创建空字符串值

转载 作者:行者123 更新时间:2023-11-29 14:20:57 25 4
gpt4 key购买 nike

我的 schema.rb 中有一个看起来像这样的模型

create_table "runs", force: true do |t|
...
t.string "label", default: "Default Run Title", null: false
...
t.datetime "timestamp"
end

但是,当我创建一个新的运行时,将表单中的标签字段留空,它将运行存储为:

=> #<Run... label: "", .....>

如果字符串作为空字符串传递,我想强制将默认值设置为 default: "Default Run Title

我错过了什么?

我想我可以使用验证器方法或 before_save 或其他方法,但我宁愿让模型控制此行为,因为这完全在 default => 应该的范围内我想...

最佳答案

将这样的垃圾放入数据库模式中真的非常烦人。如果稍后您需要更改该措辞怎么办?然后您需要运行迁移。如果您希望根据用户的语言更改措辞怎么办?然后你需要编写一个 hack 来解决它。

更好的做法是将其放入您的模型中:

before_validation :assign_default_label

然后有一个默认它的方法:

def assign_default_label
return if (self.label?)

self.label = "Default Run Title"
end

任何时候您需要更改该措辞,您都可以重新部署而无需更改架构。

如果分配的标题包含空格以外的内容,则模型中的 label? 方法将返回 true。这意味着空白标题将替换为您想要的任何措辞。这些方法由 ActiveRecord 自动生成。

关于ruby-on-rails - Rails 字符串不允许在数据库中创建空字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com