我是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'排序。
我尝试包括并加入他们但未能一起订购。
答案 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
。由于@target
和section.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。