0

配列を降順でソートしようとしましたが、うまくいきませんでした。

私は持っている...

microposts = Micropost.from_users_followed_by(self)
pub_messages = PubMessage.find_pub_messages_for(self.id)
(microposts + pub_messages).sort! { |a,b| a[:time_ago] <=> b[:time_ago] }

ただし、最後の行はすべてを昇順で返します。やっている

.reverse

それを修正しますが、そうするのはあまり効率的ではないと聞きました。やってみた

(microposts + pub_messages).sort! { |a,b| -a[:time_ago] <=> -b[:time_ago] }

しかし、-@が見つからないというエラーが発生します

私は試した

(microposts + pub_messages).sort! { |a,b| b[:time_ago] <=> a[:time_ago] }

しかし、それも変更されません(bとaを交換しました)。私は何を間違っていますか?それまでの間、メソッドを実行するとき

find_pub_messages_for and from_users_followed_by

私は次のようなことをします

default_scope order: 'pub_messages.created_at DESC'
default_scope order: 'microposts.created_at DESC'

私がそれらを取得するときの私のモデルで。しかし、それは無駄ですか?結局、行に見られるように、マイクロポストとpub_messagesの両方に基づいてそれらを再度ソートするからです

(microposts + pub_messages).sort! { |a,b| a[:time_ago] <=> b[:time_ago] }

本当にありがとう!

4

2 に答える 2

1

私はついにそれを働かせました。私がしなければなりませんでした...

(microposts + pub_messages).sort! { |a,b| b[:created_at] <=> a[:created_at] }

どうやら :time_ago はソートでうまくいきませんでした

于 2012-05-31T21:01:00.770 に答える
1
(microposts + pub_messages).sort! { |a,b| b[:time_ago] <=> a[:time_ago] }
于 2012-05-30T21:49:24.507 に答える