Zastanawiam się, czy istnieje skuteczny sposób łączenia wyników wielu obiektów ActiveRecord w Railsach. Na przykład mogę wykonać trzy indywidualne wywołania do trzech osobnych tabel i chcę, aby wyniki zostały połączone i posortowane według wspólnej kolumny.Jak łączyć obiekty ActiveRecord?
Oto bardzo prosty przykład kodu, który, miejmy nadzieję uczynić moje pytanie łatwiej zrozumieć:
@results1 = Table1.find(:all)
@results2 = Table2.find(:all)
@results3 = Table3.find(:all)
@combined_results_sorted_by_date_column = (how?)
Jak sugeruje innym, oto jedno rozwiązanie tego problemu.
@combined_results = @result1 + @result2 + @result3
@combined_results.sort! {|x,y| x.date <=> y.date}
Co zrobić, jeśli chcę sortować według daty, ale tabela 3 odnosi się do kolumny "created_on" jako daty?
Mam zastosowanie, połączone komentarze, statusy i zatwierdzenia na osi czasu w aplikacji do zarządzania problemami. – dangerousdave
W tym przypadku wszyscy muszą odpowiedzieć na konkretny interfejs lub mieć sposób na zmapowanie w jeden. Najważniejsze jest to, że myślenie o tym w kategoriach "tabel bazy danych" doprowadzi cię do złych projektów. Nie próbowałem sugerować, że nie korzystasz z danych z różnych miejsc, tylko zastanawiasz się, jak się do tego podejść. –