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

スコープを使用できます。

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 に答える
1

Ruby のsort_byを使用します。

@recent_questions.sort_by(&:create_date)
于 2013-06-06T18:54:47.283 に答える