Cho bạn phải thực hiện một nguồn cấp dữ liệu tin tức như một trong các mạng xã hội, ex facebook. Hiện tại tôi đang sử dụng một lớp Tin tức có sự phân bổ đa hình có thể thuộc bất kỳ hình thức nào như Hình ảnh, Nhận xét, Tình bạn, GroupMembership, v.v. Bất cứ khi nào một đối tượng được tạo ra, vì News cũng được tạo ra. Nó hoạt động tốt với AR (ActiveRecords) nhưng tôi gặp rắc rối khi tôi chuyển sang DM (DataMapper) hoặc Sequel vì cả hai đều không hỗ trợ các liên kết đa hình và ngăn cản việc sử dụng nó.làm thế nào để tránh các mối liên hệ đa hình
Một cách giải quyết khác là sử dụng mệnh đề SQL lớn với nhiều UNIONs để hợp nhất tất cả các bảng khác nhau cần được xem là tin tức. Nhưng điều này có một số nhược điểm, hiệu suất escpecially sẽ là khủng khiếp. Vì vậy, tôi tự hỏi làm thế nào để giải quyết mà không có các hiệp hội đa hình trong khi vẫn nhận được hiệu suất tốt và không có những hạn chế khác, như có khả năng thêm dữ liệu meta vào một tin tức không? Không, không.
Cảm ơn ... đó là một ý tưởng thực sự đơn giản nhưng tốt :-). Nó đòi hỏi một số thay đổi đối với mô hình (trả về liên kết thực sự của ref) nhưng điều đó sẽ là ok :) – gucki
Tôi không thực sự nghĩ rằng đây là giải pháp. Nó không thực sự mô tả khái niệm về ví dụ một 'có thể đánh giá' có thể là một' Doanh nghiệp' hoặc một 'Người' hoặc một' Mục'. Ngay cả khi bạn có mỗi 'business_id',' person_id', 'item_id' trong bảng' Review', bạn phải tìm trường phi nil đầu tiên trong số tất cả chúng để thực sự biết được đánh giá đang trỏ đến. Còn trường hợp một hiệp hội cụ thể có thể là một trong nhiều điều khác nhau thì sao? – fatuhoku