@user.task_assignments is a list of tasks, so you can't do
@user.task_assignments.task.name - how should the interpreter know
which task assignment (out of many) you want the task for?
You'll have to iterate through the tasks in some way, for example to
collect all the names:
names = @user.task_assignments.collect { |assignment| assignment.task.name }
or
<% for assignment in @user.task_assignments %>
<%= assignment.task.name %>
<%= assignment.to.name %>
<% end %>
You can also save yourself some typing by declaring
class User
has_many :tasks, :through=>task_assignments
end
Read up on "has_many through", that should give you some ideas.
Cheers,
Max
rab
(Rob Biedenharn)
September 20, 2006, 9:13pm
2
class User < ActiveRecord::Base
has_many :task_assignments, :foreign_key => 'to_user_id'
has_many :tasks, :through => :task_assignments
has_many :delegated_assignments, :class_name => 'TaskAssignments', :foreign_key => 'from_user_id'
has_many :delegated_tasks, :through => :delegated_assignments
end
class Task < ActiveRecord::Base
end
class TaskAssignments < ActiveRecord::Base
belongs_to :task
belongs_to :from_user, :class_name => 'User', :foreign_key => 'from_user_id'
belongs_to :to_user, :class_name => 'User', :foreign_key => 'to_user_id'
end
puts "Tasks for #{@user.name }:"
for assignment in @user.tasks
puts " #{assignment.task.name} from #{assignment.from_user.name}"
end
This may not be exactly how you're setup works, but I think it's accurate. Please let us know how it goes.
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com