You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoid中embeds_many字段为空无法保存:如何设默认值或跳过验证

Mongoid中embeds_many字段未设置时保存失败的解决方法

当使用Mongoid的embeds_many关联时,若父文档未设置子文档字段,保存时会触发["ModelTwos is invalid"]的错误。以下是几种实用解决方式:

方法一:设置默认空数组

在embeds_many声明中指定default: [],让父文档初始化时自动将该字段设为空数组,规避验证错误:

class ModelOne
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String
  embeds_many :model_twos, default: []
end

方法二:关闭关联验证

如果不需要对该关联做验证校验,可添加validate: false直接跳过验证逻辑:

class ModelOne
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String
  embeds_many :model_twos, validate: false
end

方法三:用回调设置默认值

若需要更灵活的初始化逻辑,可通过before_validation回调在验证前为字段赋值:

class ModelOne
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String
  embeds_many :model_twos

  before_validation :set_default_model_twos

  private

  def set_default_model_twos
    self.model_twos ||= []
  end
end

内容的提问来源于stack exchange,提问作者idbentley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:33:58