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?
On Sep 15, 12:22 pm, Doloo <zolzaya...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote:> 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:2A 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
This is a example. I solve it. Thank you. On Sep 15, 9:25 pm, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Sep 15, 12:22 pm, Doloo <zolzaya...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote: > > > 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 > > 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