# Has\_many :through ... What am I missing?

**URL:** <https://www.ruby-forum.com/t/has-many-through-what-am-i-missing/112168>\
**Category:** Rails\
**Created:** [August 16, 2007, 1:19am UTC](https://www.ruby-forum.com/t/has-many-through-what-am-i-missing/112168 "2007-08-16T01:19:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![stubbsuk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e56c9b/32.png) [@stubbsuk](https://www.ruby-forum.com/u/stubbsuk)\
**Post date:** [August 16, 2007, 1:19am UTC](https://www.ruby-forum.com/t/has-many-through-what-am-i-missing/112168/1 "2007-08-16T01:19:04Z")

</div>

class Ladder \< ActiveRecord::Base  
has\_many :players  
has\_many :users, :through =\> :players  
end

class Player \< ActiveRecord::Base  
belongs\_to :users  
belongs\_to :ladders  
end

class User \< ActiveRecord::Base  
has\_many :players  
has\_many :ladders, :through =\> :players  
end

When I try the following code (on the console) I get an error:

@ladder = Ladder.find(1)  
@ladder.users

I get this error:

NameError: uninitialized constant Ladder::Users  
from /opt/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/  
active\_support/dependencies.rb:477:in `const_missing' from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/ active_record/base.rb:1360:in`compute\_type’  
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/  
active\_record/reflection.rb:125:in `send' from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/ active_record/reflection.rb:125:in`klass’  
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/  
active\_record/associations/has\_many\_through\_association.rb:115:in  
`find_target' from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/ active_record/associations/association_proxy.rb:131:in`load\_target’  
from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/  
active\_record/associations/association\_proxy.rb:122:in  
`method_missing' from /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/ active_record/associations/has_many_through_association.rb:108:in`method\_missing’  
from /opt/local/lib/ruby/1.8/irb.rb:298:in `output_value' from /opt/local/lib/ruby/1.8/irb.rb:151:in`eval\_input’  
from /opt/local/lib/ruby/1.8/irb.rb:259:in `signal_status' from /opt/local/lib/ruby/1.8/irb.rb:147:in`eval\_input’  
from /opt/local/lib/ruby/1.8/irb.rb:146:in `eval_input' from /opt/local/lib/ruby/1.8/irb.rb:70:in`start’  
from /opt/local/lib/ruby/1.8/irb.rb:69:in `catch' from /opt/local/lib/ruby/1.8/irb.rb:69:in`start’  
from /opt/local/bin/irb:13

What am I missing with the :through parameter? It’s driving me nuts.

-S

---

<div class="post-metadata">

**Author:** ![stubbsuk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e56c9b/32.png) [@stubbsuk](https://www.ruby-forum.com/u/stubbsuk)\
**Post date:** [August 16, 2007, 2:24am UTC](https://www.ruby-forum.com/t/has-many-through-what-am-i-missing/112168/2 "2007-08-16T02:24:42Z")

</div>

Hi –

On Wed, 15 Aug 2007, Stuart Grimshaw wrote:

> class Ladder \< ActiveRecord::Base  
> has\_many :players  
> has\_many :users, :through =\> :players  
> end
> 
> class Player \< ActiveRecord::Base  
> belongs\_to :users  
> belongs\_to :ladders  
> end

Make those singular:

belongs\_to :user  
belongs\_to :ladder

David

–

- Books:  
RAILS ROUTING (new! [http://www.awprofessional.com/title/0321509242](http://www.awprofessional.com/title/0321509242))  
RUBY FOR RAILS ([Ruby for Rails](http://www.manning.com/black))
- Ruby/Rails training  
& consulting: Ruby Power and Light, LLC ([http://www.rubypal.com](http://www.rubypal.com))

---

<div class="post-metadata">

**Author:** ![stubbsuk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e56c9b/32.png) [@stubbsuk](https://www.ruby-forum.com/u/stubbsuk)\
**Post date:** [August 16, 2007, 12:02pm UTC](https://www.ruby-forum.com/t/has-many-through-what-am-i-missing/112168/3 "2007-08-16T12:02:43Z")

</div>

On Aug 16, 1:22 am, removed\_email\_address@domain.invalid wrote:

> Make those singular:
> 
> belongs\_to :user  
> belongs\_to :ladder

Smashing, thanks David
