如何从使用Ruby on Rails中的方法获得的类模型中对Enumerable进行排序?

时间:2013-06-06 18:47:47

标签: ruby-on-rails ruby sorting block

我的问题:

模型类:

class Question < ActiveRecord::Base
  attr_accessible :create_date, :last_update_date, :text, :title
end

从控制器中的方法我想实现类似的东西:

def index
    @recent_questions = Question.all.sort {|a, b|  a <=> b}
end

在哪里可以从最近到最早的

获得最终的可枚举order by create_date

我应该在课程定义中修改什么?

感谢。

2 个答案:

答案 0 :(得分:1)

使用Ruby的sort_by

@recent_questions.sort_by(&:create_date)

答案 1 :(得分:1)

您可以使用范围。

class Question < ActiveRecord::Base
  #...
  scope :by_time, order("created_at DESC")
end

# in controller
def index
  @recent_questions = Question.by_time
end

除非您使用Rails 4,否则不要在控制器中使用allall将返回一个数组,当您拥有大量数据时,该数组可能非常繁重。范围将返回仅在需要时运行查询的ActiveRecord::Relation对象。