Hi,

This may seem a silly question, but I didn't find an elegant solution
to manage a user's tag collection. Perhaps I'm missing something, I'd
like to know if there is a better way to handle it are.

The configuration is pretty standard stuff:

user.rb:
  has_many :user_tags, :dependent => :destroy
  has_many :tags, :through => :user_tags

tag.rb:
  has_many :user_tags, :dependent => :destroy
  has_many :users, :through => :user_tags

user_tag.rb:
  belongs_to :user
  belongs_to :tag

(tags also have many-to-many associations w/ other resources).

I would like users to have a separate page to manage their tags.

I have thought about some solutions:

* Manage the tags using different templates for user actions. Problem:
doesn't scale, will add complex logic to controllers.

* Extend the users resource with two new member actions. Problem:
doesn't scale, users will have many more collections.

* Create a controller for user_tags, nest the resource under users.
This is what I'm using now. It doesn't feel right to manipulate the
user_tags table directly, Rails already has logic for things like:

  user.tags << Tag.find_or_create_by_name("foo")
  user.tags.delete(Tag.find(params[:id]))

* Create a non-restful controller, maybe to manage all users'
collections, keeping things in one place. Add routes manually. In
particular, leverage the construct:

  accepts_nested_attributes_for :tags, ...


Any thoughts?

Thanks,

--
Adriano

-- 
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 rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to