在我的模型中,我有两个具有相同结构的表:
League1
id other_columns match_starts_at main_page
----------------------------------------------
1 xxxxxxxxxxxxx 24/06/2018 1
2 xxxxxxxxxxxxx 26/06/2018 1
和
League2
id other_columns match_starts_at main_page
----------------------------------------------
1 xxxxxxxxxxxxx 23/06/2018 1
2 xxxxxxxxxxxxx 25/06/2018 1
我的控制器执行以下操作:
league1 = League1.where(main_page: 1)
leageu2 = League2.where(main_page : 1)
如何将两个联赛中的记录混合(添加,合并或其他任何英语单词)合并为一个对象,以便以后可以通过match_starts_at
对其进行排序?
类似这样的东西:
@leagues = league1 + league2
@leagues.order(match_starts_at: :desc)
但是会导致错误:
undefined method 'order' for #<Array:0x007f0338c02898>
我想要的结果是这样(按match_starts_by排序):
League2
id other_columns match_starts_at main_page
----------------------------------------------
1 xxxxxxxxxxxxx 23/06/2018 1
1 xxxxxxxxxxxxx 24/06/2018 1
2 xxxxxxxxxxxxx 25/06/2018 1
2 xxxxxxxxxxxxx 25/06/2018 1
然后我将其分页并发送到我的视图。
答案 0 :(得分:0)
我现在可以回答自己的问题。
我没有设法将这两个ActiveRecord::Relation
对象合并为一个对象,但是事实证明,在输出上包含Array
也足够了。
我做了什么:
league1 = League1.where(main_page: 1) #ActiveRecord::Relation
leageu2 = League2.where(main_page : 1) #ActiveRecord::Relation
@leagues = league1 + league2 #which returns Array
@league = @league.sort_by { |r| r.match_starts_at }.reverse #sorting a normal array
@league = Kaminari.paginate_array(@league).page(params[:page]).per(10) # it turned out Kaminari can also paginate Array using #paginate_array