Bạn có thể thử thay đổi định nghĩa mối quan hệ của bạn như sau:
has_many :child_sites, :class_name => 'Site', :cyclic => true
belongs_to :parent_site, :class_name => 'Site', :cyclic => true
tôi không biết chính xác những gì nó làm, nhưng tôi nhớ nó đang được thảo luận trong nhóm google Mongoid. Nếu điều đó không hiệu quả, bạn nên thử đặt inverse_of
trên cả hai macro quan hệ. Hầu hết thời gian thiết lập inverse_of
chính xác thực hiện công việc.
has_many :child_sites, :class_name => 'Site', :inverse_of => :parent_site
belongs_to :parent_site, :class_name => 'Site', :inverse_of => :child_sites
Giới thiệu về các truy vấn bổ sung, có sẽ có thêm truy vấn bất cứ khi nào bạn muốn tìm child_sites của trang web hoặc trang web mẹ của trang web.
Bạn nên xem xét nhúng trang web con vào trang mẹ, nhưng hãy nhớ rằng bạn sẽ mất khả năng truy vấn trang web con theo cách độc lập. Bạn sẽ luôn phải truy cập bất kỳ trang con nào là "parent_site> child_sites".
Cũng lưu ý giới hạn 16MB về kích thước tài liệu, khó tiếp cận, nhưng có thể nếu có nhiều trang con cho cha mẹ và nếu bạn lưu trữ thông tin mẫu, như html, css, v.v ... trong chính tài liệu.
Không chắc chắn vấn đề cụ thể của bạn là gì nhưng đây không phải là lược đồ thân thiện với rất mongodb. Lưu ý rằng "mối quan hệ" như là một khái niệm không tồn tại trong mongodb do đó ở trên sẽ dẫn đến rất nhiều truy vấn (mỗi "mối quan hệ" sẽ phải được truy vấn riêng biệt bởi trình điều khiển). –
Cảm ơn bạn đã tư vấn, cách tốt nhất để tạo trang web mẹ có trang web con là gì? – Alex