从共享列排序的多个表中获取记录

时间:2015-03-06 00:44:05

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我是rails的新手,我不知道如何做这个简单的操作:

我有,

class Section < ActiveRecord::Base
   has_many :articles
   has_many :questions
end

class Article < ActiveRecord::Base
   belongs_to :section
end

class Question < ActiveRecord::Base
   belongs_to :section
end

我希望获得某个部分下的所有文章和问题,但是按共享列'updated_at'排序。

我尝试包括并加入他们但未能一起订购。

2 个答案:

答案 0 :(得分:0)

结果在单个数组中后,您可以执行以下操作:

@sorted = @records.sort_by &:updated_at

答案 1 :(得分:0)

首先找到您要使用的部分。例如,您可以按ID找到特定部分(在本例中为12):

section = Section.find(12)

然后,您可以访问属于该部分的文章和问题,并将结果与​​+运算符结合使用:

articles_and_questions = section.articles + section.questions

articles_and_questions变量的类型为ActiveRecord::Associations::CollectionProxy。由于@targetsection.articles的{​​{1}}都是section.questions个对象,因此您可以通过Array上的Array类调用任何方法。在这种情况下,您可以使用来自articles_and_questions中包含的sort_by模块的Enumerable

Array

如果您想知道sorted_articles_and_questions = articles_and_questions.sort_by &:updated_at 中有&符号的原因,请阅读this