# Has\_many :through

**URL:** <https://www.ruby-forum.com/t/has-many-through/128851>\
**Category:** Rails\
**Created:** [February 12, 2008, 5:00am UTC](https://www.ruby-forum.com/t/has-many-through/128851 "2008-02-12T05:00:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [February 12, 2008, 5:00am UTC](https://www.ruby-forum.com/t/has-many-through/128851/1 "2008-02-12T05:00:57Z")

</div>

Hi  
The following is one solution I got to my problem

```
class KnowledgeBase < ActiveRecord::Base
  has_many :sd_knowledge_bases
  has_many :sds, :through => :sd_knowledge_bases
  # (...)
end

```

# app/models/sd.rb

```
class Sd < ActiveRecord::Base
  has_many :sd_knowledge_bases
  has_many :knowledge_bases, :through => :sd_knowledge_bases

```

# # (…)

```
end

```

# app/models/sd\_knowledge\_base.rb

```
class SdKnowledgeBase < ActiveRecord::Base
  belongs_to :knowledge_base
  belongs_to :sd
# (...)
end

```

# in controller action (assuming params[:id] is the ID of your SD)

```
 @knowledge_bases = Sd.find(params[:id]).knowledge_bases

```

But I get the error  
uninitialized constant SD::SDKnowledgeBasis  
Note Basis

My table structure as below

1)knowledge\_bases

id integer not null default  
nextval(‘public.knowledge\_bases\_id\_seq’::text)  
name character varying(200)  
keyword text  
url character varying(500)  
summary text  
details text

2)sd\_knowledge\_bases

id integer not null default  
nextval('public.service\_desk\_knowledge\_bases\_id\_seq  
'::text)  
sd\_id integer  
knowledge\_base\_id integer

Pls help  
Sijo
