2016-03-21 7 views
0

У меня есть 3 моделиУникальный список через отношения has_many

class User < ActiveRecord::Base 
    has_many :teams, :through => :team_memberships 
    has_many :team_memberships 
end 

class Teams < ActiveRecord::Base 
    has_many :users, :through => :team_memberships 
    has_many :team_memberships 

    has_many :clubs, :through => :club_memberships 
    has_many :club_memberships 
end 

class Clubs < ActiveRecord::Base 
    has_many :teams, :through => :club_memberships 
    has_many :club_memberships 
end 

Я хочу, чтобы иметь возможность получить уникальный список клубов, которые пользователь является членом. Если у меня есть следующее:

@teams = User.last.teams 

Как я могу получить список клубов, членами которых являются эти команды. Если есть какие-то дубликаты, я хотел бы показывать их только один раз в списке.

В настоящее время, если я:

<% @user.teams.each do |t| %> 
    <% t.clubs.each do |c| %> 
    <%= link_to c.name, c %> 
    <% end %> 
<% end %> 

я, очевидно, получить полный список, но я хочу, чтобы удалить дубликаты. Может ли кто-нибудь исправить ошибку?

ответ

0

Похоже, что я могу просто установить отношения, как так:

class User < ActiveRecord::Base 

    has_many :clubs, -> { uniq }, :through => :teams 

end 

, а затем ссылки:

<% @user.clubs.each do |c| %> 
    <%= c.name %> 
<% end %> 

Пожалуйста, дайте мне знать, если есть лучший путь!

Смежные вопросы