Ryan Bates' railscastの後に私のRuby on Railsアプリでusers
の友人自己参照関係を設定しました。私は首尾よくフォロー、アンフォロー、そして誰がフォローしているかを見ることができます。今私は別の要素を取り入れたいと思うし、それをどうやって行うのか分からない。他の関連付けのための自己参照関連付けをどのようにループするのですか?
User has_many :workouts
私が従うユーザーのワークアウトを表示したいと思います。 Twitterのようなものは、あなたのフォローしているユーザーのツイートを表示します。これは、私の下の団体与えられたか、私は別のものを設定する必要があります、例えば、ここで
Friendship has_many :workouts, :through => :users.
はあなたが必要な場合がありますモデル情報の残りの部分で行うことができます。
User.rb
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
has_many :workouts, :dependent => :destroy
Friendship.rb
belongs_to :user
belongs_to :friend, :class_name => "User"
Workout.rb
belongs_to :user
ない追加の関連付けが必要な場合は、/ユーザ/ショーで構文ものです.html.erbビューを使用して、友人のワークアウトを表示します。
UPDATE:
それは私がこの近くを取得することができる午前以下ジョサイアキールズからの回答に基づいているようです。彼のアドバイスあたりのコンソールでテストした後、私は、ビューに次のコードを使用:
<% current_user.friends[0].workouts.each do |workout| %>
<%= workout.title %><br/>
<% end %>
をしかし、これは私が続く最初のユーザーのためのトレーニングを返すようです。
私はすべての友人のワークアウトを1つのストリームに統合したいと考えていました。コードの最初のビットは、友達のリストを表示するために働き、私が2番目のコードを使用するときは、 '未定義のメソッドfor workout'というエラーが出ます。 – bgadoci
より具体的には、エラーは次のようになります:# ' –
bgadoci
のための '未定義メソッド' workout'また...私はワークアウトを表示する必要があります:order => "created_at DESC" – bgadoci