【发布时间】:2018-06-26 12:30:09
【问题描述】:
在我的模型中,我有两个结构相同的表:
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
然后我将其分页并将其发送到我的视图。
【问题讨论】:
-
你可以使用
sort_by:apidock.com/ruby/Enumerable/sort_by -
@JagdeepSingh 是的,但是我无法对其进行分页,因为它是一个数组,而不是 activerecord 返回的对象
-
它会抛出错误
undefined method 'order' for #<Array:0x007f0338c02898,因为order是ActiveRecord::QueryMethods的一部分,因此您只能在ActiveRecord实例上调用它 -
Google 或搜索 SO 以查找
UNION或更改您的数据库结构以拥有一个leagues表。 -
有人渴望一步一步地展示如何做到这一点吗?我找到了一些解决方案,但我不理解它们,所以我不知道如何针对这种特定情况定制它们
标签: ruby-on-rails activerecord model append