1

我的问题:

模型类:

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从最近到最旧的 Enumerable

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

谢谢。

4

2 回答 2

1

使用 Ruby 的sort_by

@recent_questions.sort_by(&:create_date)
于 2013-06-06T18:54:47.283 回答
1

您可以使用范围。

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

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

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

于 2013-06-06T18:55:29.023 回答