Q: Using Same Table in Multiple Associations

I’m having a brain cramp this morning. Here’s what I want to do. I want
users
to log in, and then I want to use their log in name to track bugs they
report and the person a bug is assigned to. That implies that a single
model
is associated with the same other model multiple times. Here’s where the
brain cramp comes in: I forgot how.

class Bug < ActiveRecord::Base
belongs_to :project
has_many :events
belongs_to :reporter # this is a :user
belongs_to :assigned_to # this is a :user
has_one :status

end

The reporter and assigned_to associations have their own ids,
reporter_id
and assigned_to_id. However, these ids refer to records in the users
table.
I can create faux models Reporter and AssignedTo that do a
set_table_name
:users, but that wrecks all validations and other goodness. Is
inheritance
the right thing to do here?

Thanks

View this message in context:
http://www.nabble.com/Q%3A-Using-Same-Table-in-Multiple-Associations-tf2207335.html#a6113449
Sent from the RubyOnRails Users forum at Nabble.com.

Hello s :slight_smile:
Eh, not a problem, brain cramps happen to the best of us :wink: The way
-I- would change that bug class would be to have it look something like;

class Bug < ActiveRecord::Base
   belongs_to :user, :foreign_key => "reporter_id"
   belongs_to :user, :foreign_key => "assigned_to_id"
   ...
end

Of course, this means in your bug table that you have to have two

columns ‘reporter_id’ and ‘assigned_to_id’, but from what I have read,
you already have those :wink: Btw, I am not going to even start asking ‘what
happens if you have more than one person helping on a bug’ ;p

Regards
Stef

Stef T wrote:

Hello s :slight_smile:
Eh, not a problem, brain cramps happen to the best of us :wink: The way
-I- would change that bug class would be to have it look something like;

class Bug < ActiveRecord::Base
   belongs_to :user, :foreign_key => "reporter_id"
   belongs_to :user, :foreign_key => "assigned_to_id"
   ...
end

This looks suspicious to me. You can’t have two associations named user
because then when you go @bug.user which user to do you want?

 class Bug < ActiveRecord::Base
    belongs_to :reporter, :class_name=>'User', :foreign_key =>

‘reporter_id’
belongs_to :assignee, :class_name=>‘User’, :foreign_key =>
‘assigned_to_id’

end

-Peter

Very good point Peter, I have never had the need to use the bug.user
method, the place where in my application where I have a duplicate
class, I only ever use the values stored using SQL in another
application (reporting). Duly noted :slight_smile:

Regards
Stef