我想知道是否有一種有效的方法來結合Rails中的多個ActiveRecord對象的結果。例如,我可能會對三個單獨的表格進行三次單獨調用,並且希望將結果合併起來,並按共同列進行排序。如何結合ActiveRecord對象?
這裏是一個超級的基本代碼示例,希望能做出我的問題更容易理解:
@results1 = Table1.find(:all)
@results2 = Table2.find(:all)
@results3 = Table3.find(:all)
@combined_results_sorted_by_date_column = (how?)
至於建議由別人,這裏是一個解決問題的辦法。
@combined_results = @result1 + @result2 + @result3
@combined_results.sort! {|x,y| x.date <=> y.date}
如果我想按日期排序,但是Table3引用的是「created_on」列作爲日期?
我有一個用例,組合註釋,狀態和提交問題管理應用程序中的時間軸。 – dangerousdave 2012-10-23 18:24:26
在這種情況下,他們必須全部響應特定的接口或有一種方法被映射到一個。關鍵在於,用「數據庫表」思考它會導致你陷入糟糕的設計。我並不是想暗示你不使用來自不同地方的數據,只是質疑你如何接近/思考它。 – 2012-10-25 15:58:35