首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6多态模型提供验证错误

Rails 6多态模型提供验证错误
EN

Stack Overflow用户
提问于 2020-11-27 20:39:21
回答 1查看 278关注 0票数 0

我正在将一个Rails 5.2应用程序升级到Rails 6,并且在我的多态模型中遇到了一个错误。它可以belong_to其他几个模型,但它本身只需要一个身体。

代码语言:javascript
复制
class Note < ApplicationRecord
  belongs_to :notable, polymorphic: true
  belongs_to :user

  belongs_to :profession
  belongs_to :topic

  has_many :notes, as: :notable, :dependent => :destroy
  validates :body, presence: true, allow_blank: false
end

当我创建或编辑一个注释,即使它有一个主体和用户和值得注意的设置正确,验证失败,因为它说专业和主题不能是空白的。

=> #,@messages={:topic=>“必须存在”,:profession=>“必须存在”},@details={:topic=>{:error=>:blank},:profession=>{:error=>:blank}}>

如果我在上面的模型中注释掉了belongs_to,它就会验证得很好。

我搜索了这些文档,看看是否可以在任何地方解释这种行为,但是验证或升级指南中的任何内容似乎都不能解决多态关联方面的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-27 20:54:31

现在您需要将optional: true添加到belongs_to中,或者rails默认添加一个验证。见下文:

代码语言:javascript
复制
class Note < ApplicationRecord
  belongs_to :notable, polymorphic: true
  belongs_to :user

  belongs_to :profession, optional: true
  belongs_to :topic, optional: true

  has_many :notes, as: :notable, :dependent => :destroy
  validates :body, presence: true, allow_blank: false
end

这方面的文档如下:https://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#new-framework-defaults

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65043612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档