-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
None
-
Ruby Drivers
-
None
-
None
-
None
-
None
-
None
-
None
Related issue: MONGOID-5888
Recap: In 9.0.7, a change was made that broken validation of deeply nested children
In 9.0.8, a fix was added that corrected updates of deeply nested children so that they validate. But it did not resolve validation of creation of grandchildren.
Note the follow reproduction case. Grandchild comment title is set to nil, but comment requires title to be present. Also, post_id is needed, but not supplied at all. Despite these, update! does not raise an error for either, and the comment is silently skipped.
require 'bundler/inline' gemfile do source 'https://rubygems.org' gem 'mongoid', '9.0.8' end Mongoid.configure do |config| config.clients.default = { hosts: ['localhost:27017'], database: 'mongoid_test', } end class Post include Mongoid::Document has_many :comments, inverse_of: :post accepts_nested_attributes_for :comments, allow_destroy: true field :title, type: String end class Comment include Mongoid::Document belongs_to :post, inverse_of: :comments belongs_to :parent, class_name: 'Comment', inverse_of: :comments, optional: true has_many :comments, inverse_of: :parent accepts_nested_attributes_for :comments, allow_destroy: true validates :title, presence: true field :title, type: String end post = Post.create(title: 'Post 1') comment1 = post.comments.create!(title: 'Comment 1') puts 'Before:' puts post.inspect puts " #{comment1.inspect}" puts " #{comment1.comments.to_a}" puts '' post.update!( comments_attributes: [ { _id: comment1.id, comments_attributes: [ { title: nil } ] } ] ) puts 'After:' puts post.reload.inspect puts " #{comment1.reload.inspect}" puts " #{comment1.comments.to_a}"
- is blocked by
-
MONGOID-5911 Partial and invalid writes with nested attributes
-
- Backlog
-
- is related to
-
MONGOID-5888 9.0.7 revert of child validations causes grandchild records not to validated/persisted
-
- Closed
-
- related to
-
MONGOID-5906 Using assign_attributes with nested attributes on has_many model erroneously persists
-
- Blocked
-