Tôi tự hỏi nếu có một cách hiệu quả để kết hợp các kết quả của nhiều đối tượng ActiveRecord trong Rails. Ví dụ: tôi có thể thực hiện ba cuộc gọi riêng lẻ đến ba bảng riêng lẻ và tôi muốn kết quả được kết hợp và được sắp xếp theo một cột chung.Làm cách nào để kết hợp các đối tượng ActiveRecord?
Dưới đây là một ví dụ siêu cơ bản mã mà hy vọng sẽ làm cho câu hỏi của tôi dễ dàng hơn để hiểu:
@results1 = Table1.find(:all)
@results2 = Table2.find(:all)
@results3 = Table3.find(:all)
@combined_results_sorted_by_date_column = (how?)
Theo đề nghị của người khác, đây là một giải pháp cho vấn đề.
@combined_results = @result1 + @result2 + @result3
@combined_results.sort! {|x,y| x.date <=> y.date}
Nếu tôi muốn sắp xếp theo ngày, nhưng Bảng 3 đề cập đến cột "created_on" là ngày?
Tôi có một chú thích, kết hợp nhận xét, trạng thái và cam kết cho dòng thời gian trong ứng dụng quản lý vấn đề. – dangerousdave
Trong trường hợp này, tất cả họ phải trả lời một giao diện cụ thể hoặc có cách để được ánh xạ thành một. Điểm mấu chốt là suy nghĩ về nó trong điều khoản của "bảng cơ sở dữ liệu" sẽ dẫn bạn vào thiết kế kém. Tôi đã không cố gắng để ngụ ý bạn không sử dụng dữ liệu từ những nơi khác nhau, chỉ cần đặt câu hỏi như thế nào bạn tiếp cận/suy nghĩ về nó. –