0

Rails 3.2、ツイッターアプリ

更新: ツイートをランダム化しようとしていたことを伝えたいと思います。そして、found@instace.shuffle.eachはこれを非常にうまく行います。

今、私はそのようにすべてのステータスを表示できます。

users_controller.rb

def buddies
buddies_ids = current_user.followeds.map(&:id).push(current_user.id)

@ribbits = Ribbit.find_all_by_user_id buddies_ids

/views/users/buddies.html.erb

 <% @ribbits.each do |ribbit| %>

<h3><%= ribbit.user.username %></h3>
   <%= ribbit %>

あなたは要点を理解します。どこfind_all_by_user_idから来たのかはわかりませんが、フォローしているユーザーごとに最新のステータスのみを表示したいと考えています。

魔法の言葉はどこに置く?

4

2 に答える 2

0

Ribbit.find_all_by_user_idRailsが動的に作成するメソッドです。詳細については、RailsCast の動的 find_by メソッドを参照してください。

find_all_by_user_idは動的レール メソッドとよく似ておりfind_by_user_id、最初のものを見つけるだけです。最新の「ribbit」を見つけるには、次のように記述します

@latest_ribbit = Ribbit.find_by_user_id(user_id, :order => 'created_at DESC')

編集:これを少し拡張する必要があります。は、他の動的メソッドと同様に、値find_all_by_user_idの配列 (例: ) を受け入れます。user_id の配列も受け入れますが、配列内の各 user_id の最初の条件を満たすアイテムではなく、最初の条件を満たすアイテムのみを返します。したがって、プラグアンドプレイの例が必要な場合は、行を次のように置き換えますuser_idbuddies idsfind_all_by...find_by_user_id@ribbits =

@ribbits = []
buddies_ids.each do |id|
  @ribbits << Ribbit.find_by_user_id(user_id, :order => 'created_at DESC')
end

時系列のフィードが必要な場合は、@ribbits で created_at に基づいて並べ替えを行う必要があります。これは、コードの最後にある buddies_ids の順序になるためです。

于 2013-11-04T22:07:39.767 に答える