# Association problem

**URL:** <https://www.ruby-forum.com/t/association-problem/175551>\
**Category:** Rails\
**Created:** [September 15, 2009, 2:25pm UTC](https://www.ruby-forum.com/t/association-problem/175551 "2009-09-15T14:25:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Doloo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/57b2e6/32.png) [@Doloo](https://www.ruby-forum.com/u/Doloo)\
**Post date:** [September 15, 2009, 2:25pm UTC](https://www.ruby-forum.com/t/association-problem/175551/1 "2009-09-15T14:25:15Z")

</div>

Hi, I’m new to ruby on rails. So i think i have association problems.

Given the three model classes with their associations:

# user.rb

class User \< ActiveRecord::Base  
has\_many :product\_groups  
has\_many :products, :through=\>:product\_groups  
end

# product\_group.rb

class ProductGroup \< ActiveRecord::Base  
has\_many :products  
belongs\_to :user  
end

# product.rb

class Product \< ActiveRecord::Base  
belongs\_to :product\_group  
has\_one :user  
end

So when i trying add new product. I get errors.

# products\_controller.rb

def new  
@product = current\_user.product\_groups.products.build  
end  
The error I’m receiving is:

NoMethodError (undefined method `products' for #<Class:0x2ca50b0>): app/controllers/products_controller.rb:27:in`new’  
-e:2:in `load’  
-e:2

I’m confused, can anybody help me?

---

<div class="post-metadata">

**Author:** ![Doloo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/57b2e6/32.png) [@Doloo](https://www.ruby-forum.com/u/Doloo)\
**Post date:** [September 15, 2009, 2:27pm UTC](https://www.ruby-forum.com/t/association-problem/175551/2 "2009-09-15T14:27:35Z")

</div>

On Sep 15, 12:22 pm, Doloo [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> -e:2
> 
> ```

A collection of product\_groups doesn’t have a products method  
(individual product group do).  
Users have a products association, so why not do  
current\_user.products.build ? (Although I’m not sure if you can do a  
has\_many through where the join model has a has\_many)

Fred

---

<div class="post-metadata">

**Author:** ![Doloo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/57b2e6/32.png) [@Doloo](https://www.ruby-forum.com/u/Doloo)\
**Post date:** [September 15, 2009, 2:32pm UTC](https://www.ruby-forum.com/t/association-problem/175551/3 "2009-09-15T14:32:52Z")

</div>

This is a example. I solve it. Thank you.

On Sep 15, 9:25 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
