Ryan Bates' railscast 다음에 Ruby on Rails 앱에서 users
에 대한 우정 자체 참조 연결을 성공적으로 설정했습니다. 내가 팔로우하고있는 사람을 성공적으로 팔로우, 언 폴링 및 볼 수 있습니다. 이제 다른 요소를 가져와서 어떻게해야할지 모르겠다.다른 연결에 대해 자체 참조 연결을 어떻게 루프합니까?
User has_many :workouts
내가 따르고있는 사용자의 운동을 표시하고 싶습니다. 트위터와 같은 종류의 사용자는 내가 팔로우하는 사용자의 트윗을 표시합니다. 이 여기
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 %>
을하지만 이것은 단지 내가 다음에 첫 번째 사용자를 위해 운동을 반환 할 것으로 보인다. 당신은 아마 이런 식으로 뭔가 할 수
a = User.last
a.friends[0].workouts
나는 모든 친구들의 운동을 하나의 흐름으로 통합하기를 원했다. 첫 번째 코드는 친구들의 운동 목록을 표시하는 데 사용되며, 두 번째 코드를 사용하면 '정의되지 않은 운동 방법'오류가 발생합니다. – bgadoci
오류가 구체적으로 : 번호'정의되지 않은 메서드'운동을 '<사용자 : 0x1048d8e70>' – bgadoci
또한 ... 나는 운동이 필요 표시 : 순서 => "DESC created_at" – bgadoci