Mam 4 następujące modele:
class User < ActiveRecord::Base
has_many :messages
has_many :user_teams
has_many :teams, :through => :user_teams
has_many :project_admins
has_many :ordered_projects
has_many :projects
end
class UserTeam < ActiveRecord::Base
belongs_to :user
belongs_to :team
end
class Team < ActiveRecord::Base
has_many :projects
has_many :user_teams
has_many :users, :through => :user_teams
end
class Project < ActiveRecord::Base
has_many :messages
belongs_to :team
has_one :project_admin
has_one :ordered_project
belongs_to :user
end
Każdy project ma jednego użytkownika, który utworzył nowy projekt(Project belongs_to :user), każdy projekt jest przypisany do teamu w którym może być wielu użytkowników.
Teraz chciałbym wylistować wszystkie projekty danego usera, do których należy przez team.
Zrobiłem to w taki sposób:
class User < ActiveRecord::Base
def get_projects
teams_id = []
self.teams.each {|team| teams_id << team.id}
Project.where(:team_id => teams_id)
end
end
ale jako, że się uczę zastanawiam się czy nie ma na to jakiegoś bardziej eleganckiego rozwiązania?