Error in has_many :through


#1

When I was using habtm

product.categories.replace(…category objects) was working fine

But when I started using has_many :through

other relations are working, but I am not able to do

product.categories.replace(…category objects)

What is the solution then?

Regards,
Anil W.


#2

What is the solution then?
Can you post your relationship declarations for the product and
category models?

Steve


#3

Hi Steve,

These are relationship declarations for product, category and
CategoriesProduct models!

class Product < ActiveRecord::Base

has_many :categories_products
has_many :categories, :through => :categories_products

class Category < ActiveRecord::Base

has_many :categories_products
has_many :products, :through => :categories_products

class CategoriesProduct < ActiveRecord::Base
belongs_to :category
belongs_to :product
end

On 2/2/07, Steve B. removed_email_address@domain.invalid wrote:

What is the solution then?
Can you post your relationship declarations for the product and
category models?

Steve


Don’t live to geek; geek to live.
http://anildigital.blogspot.com


#4

Thanks Josh,

I did the same.

Regards,
Anil W.

On 2/4/07, Josh S. removed_email_address@domain.invalid wrote:

Josh S.
http://blog.hasmanythrough.com/


Posted via http://www.ruby-forum.com/.


Don’t live to geek; geek to live.
http://anildigital.blogspot.com


#5

Anil W. wrote:

When I was using habtm

product.categories.replace(…category objects) was working fine

But when I started using has_many :through

other relations are working, but I am not able to do

product.categories.replace(…category objects)

What is the solution then?

#replace is not implemented for has_many :through associations. You can
roll your own though. Just delete the join model records of old ones not
in the new set, then create join model records for the new ones not in
the old set. And of course you should wrap that in a transaction.


Josh S.
http://blog.hasmanythrough.com/