("no success" is too vague. You need to show the specific results or
error messages you're getting. Otherwise, we need to break out the
crystal ball.)
Assuming you have the tables set up correctly (you need a groups_users
join table), your problem is that current_user.groups doesn't have a
tasks method. It's a collection of Group rows, each of which would
have a tasks method.
You need to iterate over the groups:
all_tasks = current_user.groups.collect(&:tasks).flatten
HTH
Well, the easy way is (I'm assuming you have a boolean column called
"finished"):
current_user.groups.collect(&:tasks).flatten.collect(&:finished?)
But that's not very efficient, since it retrieves all tasks and then
throws away the unfinished ones.
You could call find() on the tasks collection proxy for an improvement:
current_user.groups.collect {|g| g.tasks.find_by_finished(true)}.flatten
It's probably even more efficient to start from the Task model.
Something like this:
Task.find :all,
:include => :groups,
:conditions => ['tasks.finished=1 and groups.user_id=?', current_user.id]
I think you would benefit from looking at the scope_out plugin. It is
excellent for tasks like these.
Regards
Erik Lindblad