Я успешно установил референсную ассоциацию дружбы для users
в моем приложении Ruby on Rails после того, как следовал railscast Райана Бейтса . Я могу успешно подписаться, отписаться и посмотреть, кто подписан. Теперь я хочу добавить еще один элемент, и я не уверен, как это сделать.
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
Если не требуются дополнительные ассоциации, каков синтаксис в представлении /users/show.html.erb для отображения тренировок для друзей.
UPDATE:
Кажется, основываясь на ответе Джозии Киля, приведенного ниже, я могу подойти ближе. После тестирования в консоли по его совету, я использовал следующий код в представлении:
<% current_user.friends[0].workouts.each do |workout| %>
<%= workout.title %><br/>
<% end %>
Но, похоже, это возвращает тренировки только для первого пользователя, за которым я следил.