Rails 7.0迁移包含属性t.bigint :status_id, default: 6
,该属性在模型中调用如下
belongs_to :status, class_name: 'Categoryminor'
如果运行测试
shop = Shop.new(name: 'apatride')
assert shop.valid?
单元测试将抱怨#<ActiveModel::Errors [#<ActiveModel::Error attribute=status, type=blank, options={:message=>:required}>]>
,尽管模式清楚地声明了t.bigint "status_id", default: 6
并使用postgresql进行验证,默认值在那里定义得很好。
更改类
belongs_to :status, class_name: 'Categoryminor', optional: true
允许考试通过,但这有点荒谬.如果有默认值,则属性不能为空。
这是怎么回事?
发布于 2022-07-03 02:52:06
从rails 5开始,belongs_to
关系就有存在性验证。仅仅放置一个随机的status_id是不够的。CategoryMinor
表中必须有id为6的记录,在测试的情况下,必须正确地调用夹具。
解决这一问题的两种实际方法:
在status: id: 6
https://stackoverflow.com/questions/72845809
复制相似问题