HABTM 3 table relation

Some help please!! class Article < ActiveRecord::Base has_and_belongs_to_many :tags, :join_table => :articles_tags_users has_and_belongs_to_many :users, :join_table => :articles_tags_users

end

class Tag < ActiveRecord::Base

has_and_belongs_to_many :articles, :join_table => :articles_tags_users

has_and_belongs_to_many :users, :join_table => :articles_tags_users

end

class User < ActiveRecord::Base

has_and_belongs_to_many :articles, :join_table => :articles_tags_users

has_and_belongs_to_many :tags, :join_table => :articles_tags_users

end

then in the controller

user = User.new tag = Tag.find(id) article = Article.find(id) user.tag << tag user.article << article

all this creates 2 tuples on the database articles_tags_users instead of one with all the values

Do somebody knows how to do this?

Thanks !

Some help please!! class Article < ActiveRecord::Base has_and_belongs_to_many :tags, :join_table => :articles_tags_users

[...]

user = User.new tag = Tag.find(id) article = Article.find(id) user.tag << tag user.article << article

all this creates 2 tuples on the database articles_tags_users instead of one with all the values

Do somebody knows how to do this?

I hope someone will correct me if I'm wrong, but I believe you will need to use has_many :through for this case -- HABTM isn't meant for 3- way joins as far as I know. You'll need something like this:

class Article < ActiveRecord::Base   has_many :correlations   has_many :tags, :through => :correlations   has_many :users, :through => :correlations end

(similarly for User and Tag)

class Correlation < ActiveRecord::Base   belongs_to :article   belongs_to :tag   belongs_to :user end

Then your sample controller code would become something like

user = User.new tag = Tag.find(id) article = Article.find(id) user.correlations << Correlation.new(:tag => tag, :article => article)

Does that help?

Best,

that worked thank you very much!