Users HM Projects, Projects HM Activities: Question on find

As the topic suggests, I have a USER model that has many Projects, and a
PROJECT model that has many Activities. What is the easiest way to find
all Activities that belong to the logged in user? Is this something
that isn’t possible and should I also create a user_id in activities and
create a BT/HM relationship there?

Thank you

As the topic suggests, I have a USER model that has many Projects, and a
PROJECT model that has many Activities. What is the easiest way to find
all Activities that belong to the logged in user? Is this something
that isn’t possible and should I also create a user_id in activities and
create a BT/HM relationship there?

Read about has many through…

If you end up with lots of users/projects though it won’t be really
really
fast. If you want it lightning fast add user_id to activities so you
can
query it directly.

class Assignment < ActiveRecord::Base
belongs_to :programmer # foreign key - programmer_id
belongs_to :project # foreign key - project_id
end
class Programmer < ActiveRecord::Base
has_many :assignments
has_many :projects, :through => :assignments
end
class Project < ActiveRecord::Base
has_many :assignments
has_many :programmers, :through => :assignments
end

Philip H. wrote:

As the topic suggests, I have a USER model that has many Projects, and a
PROJECT model that has many Activities. What is the easiest way to find
all Activities that belong to the logged in user? Is this something
that isn’t possible and should I also create a user_id in activities and
create a BT/HM relationship there?

Read about has many through…

If you end up with lots of users/projects though it won’t be really
really
fast. If you want it lightning fast add user_id to activities so you
can
query it directly.

class Assignment < ActiveRecord::Base
belongs_to :programmer # foreign key - programmer_id
belongs_to :project # foreign key - project_id
end
class Programmer < ActiveRecord::Base
has_many :assignments
has_many :projects, :through => :assignments
end
class Project < ActiveRecord::Base
has_many :assignments
has_many :programmers, :through => :assignments
end

Thanks. For what it’s worth, I just solved my own problem using a
little bit or ruby:

@activity_list = []
projects = Project.find(:all, 

:conditions=>[‘user_id=?’,current_user.id])
projects.each do |p|
p.activities.each do |a|
@activity_list << a if a.completed == nil && a.win_at != nil
end
end

@activities = @activity_list.sort_by { |a| a.win_at }