यह सर्वोत्तम अभ्यास है या नहीं यह एक अत्यधिक बहस का विषय है। उदाहरण के लिए, आपको वस्तु आकार सीमा (वर्तमान में 4 एमबी, लेकिन जल्द ही बढ़ जाएगी) पर ध्यान देना होगा।
आपके प्रश्न के लिए:मेरा सुझाव है कि आप बदल दें
embeds_many :replies, :class_name => 'Message'
embedded_in :message, :inverse_of => :replies
करने के लिए
embeds_many :replies, :class_name => 'Message'
referenced_in :message
और आपको दोनों कनेक्शनों को मैन्युअल रूप से निर्दिष्ट करना होगा (यह कोई समस्या नहीं होनी चाहिए, क्योंकि वे शायद वैसे भी अपरिवर्तनीय हैं)।
irb(main):002:0> msg1 = Message.new :subject => 'new question'
=> #<Message _id: 4cc7699f457601d7e8000001, created_at: nil, body: nil, updated_at: nil, subject: "new question", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):003:0> msg2 = Message.new :subject => 'first comment'
=> #<Message _id: 4cc769b6457601d7e8000002, created_at: nil, body: nil, updated_at: nil, subject: "first comment", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):005:0> msg2.message = msg1
=> #<Message _id: 4cc7699f457601d7e8000001, created_at: nil, body: nil, updated_at: nil, subject: "new question", read_at: nil, sender_deleted: false, message_id: nil, recipient_deleted: false>
irb(main):007:0> msg1.replies << msg2
=> [#<Message _id: 4cc769b6457601d7e8000002, created_at: nil, body: nil, updated_at: nil, subject: "first comment", read_at: nil, sender_deleted: false, message_id: BSON::ObjectId('4cc7699f457601d7e8000001'), recipient_deleted: false>]
irb(main):008:0> msg1.save
=> true