On Dec 19, 8:26 am, "Felipe Vergara" <[email protected]> wrote:
> 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,
--
Marnen Laibow-Koser
[email protected]
http://www.marnen.org
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to