class Foo include Mongoid::Document has_and_belongs_to_many :bars, :inverse_of => nil end class Bar include Mongoid::Document end f = Foo.create! f.bars = [Bar.new] f.reload.bars => [#<Bar _id: 4f0f39e50bed3f14fa000002, _type: nil>]
So f.bars was persisted immediately, rather than waiting for a save. Is this behaviour intended? It means you don't get to run validations on bars...