2016-03-23 27 views
2

に別の名前のとき、これはここで私の最初の投稿です- (!私は答えを見つけることができませんでした1回目)日付フィールドがRAILS

私は2つのレコード

Course.spotlight 
NewsItem.spotlight 
を持っています

両方とも5レコードを返します。

@spotlight = Course.spotlight + NewsItem.spotlight 

Course.spotlightrelease_dateによってソートされ、 NewsItem.spotlightpublish_atでソートされ、両方とも日付フィールドです:私はそれらを組み合わせています。

私の質問は、日付フィールドが別の名前である場合、日付でソートする方法です

答えて

3

あなたはRubyのメソッドsort_byを使用することができます。

@spotlight = @spotlight.sort_by do |record| 
    if record.respond_to?(:release_date) 
    record.release_date 
    else 
    record.publish_at 
    end 
end 
# sort by date ASC, you can use reverse! to change to order to DESC 
# @sportlight.reverse! 

このコードは、すべての@spotlightレコードは常にrelease_dateまたはpublish_at(Rubyが日付とnilを比較することはできません)のいずれかを呼び出してから、日付を返すことを意味します。 @spotlight(レコード数百以上のような)のレコードが多い場合には、これはパフォーマンスが高価になる可能性があります。

+0

これはソートしますが、一括してソートします。まずソートされたコースを取得し、次にNewsItemをソートします。私は現在私が探している混合コンテンツを取得しません –

+0

それはどういう意味ですか?出力の例を挙げることはできますか? – MrYoshiji

+0

コース1 - コース2 - コース3 - ニュースアイテム1 - ニュースアイテム2 - ニュースアイテム3私は、コース1 - NewsItem1、コース2、ニュースアイテム2、コース3、ニュースアイテム3を期待しています。 –

関連する問題