One model, several relations to another model

Hi all,

I don’t know a better title for my question, sorry about that.

The problem I’m having is that I’ve got no clue how to do this:

Table issues:
Column created_by
Column closed_by

Both of those columns will hold User#id’s. For what I’ve read and
understood in the API, you can do:

Class Issue < AR::B
belongs_to :created_by, :class_name => :user
belongs_to :closed_by, :class_name => :user
end

But then, in my parent class:

Class User < AR::B
has_many :? # Issues trough created_by
has_many :? # Issues trough updated_by
end

I’ve stopped here because I feel I’m not going in the right
direction…

has_many :created_issues, :class_name => “Issue”, :foreign_key =>
“created_by”
has_many :closed_issues, :class_name => “Issue”, :foreign_key =>
“closed_by”

On Dec 22, 2007 7:54 PM, [email protected] [email protected] wrote:

Class User < AR::B
has_many :? # Issues trough created_by
has_many :? # Issues trough updated_by
end

I’ve stopped here because I feel I’m not going in the right
direction…


Ryan B.

When you say, it sounds so easy…

Thanks a lot, again! =)

Ok,

Here are the associations:

Class Issue < AR::B
belongs_to :creator, :class_name => :user, :foreign_key
=> :created_by
belongs_to :solver, :class_name => :user, :foreign_key => :closed_by
belongs_to :owner, :class_name => :user, :foreign_key
=> :assigned_to
end

Class User < AR::B
has_many :created_issues, :class_name => :issue, :foreign_key
=> :created_by
has_many :closed_issues, :class_name => :issue, :foreign_key
=> :closed_by
has_many :assigned_issues, :class_name => :issue, :foreign_key
=> :assigned_to
end

If I do:

@issues = Issue.find(:all, :include => :owner )

I get error:

can’t convert Symbol into String

Stack:

C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
base.rb:1347:in type_name_with_module' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ base.rb:1746:incompute_type’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
reflection.rb:125:in send' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ reflection.rb:125:inklass’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1561:in initialize' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1459:innew’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1459:in build_join_association' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1442:inbuild’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1445:in build' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1444:ineach’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1444:in build' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1385:ininitialize’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1123:in new' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1123:infind_with_associations’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
associations.rb:1122:in catch' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ associations.rb:1122:infind_with_associations’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
base.rb:1232:in find_every' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ base.rb:503:infind’
app/controllers/issues_controller.rb:5:in `index’

Fixed.

Instead of using symbols for :class_name => I used strings.

So :class_name => :user became :class_name => ‘User’.