ruby on rails 合併多個結果集並排序

   在最近工作中,遇到多個reust,需要顯示在同一個dialog中的問題,並且按照時間排序,查閱了不少資料,尋找到一種有效的解決辦法,如下:

  

    1,針對同一張表查詢出來的多個結果集需要合併,按照column1排序

       set1_data = xxx.users

       set2_data = yyy.users

       result = set1_data + set2_data 

       result = result.sort_by{|r| r.column1}

    2.針對不同表查詢結果進行合併,按照column1排序

       set1_data = xxx.users

       set2_data = yyy.users

       result = User.from("(#{set1_data.to_sql} union all #{set2_data.to_sql}) as users")

       result = result.sort_by{|r| r.column1}

     3.還有一種其他大神給的方案,也是ruby提供的方案,本人沒有驗證

and 並集的合併用 merge

http://api.rubyonrails.org/classes/ActiveRecord/SpawnMethods.html#method-i-merge

or 的合併用or

http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-or

  Eric

[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章