acts_as_taggable and new taggable items

I just brought acts_as_taggable into an app and I have one question. Is the following the best way to tag a brand new taggable item? (Note: I'm grabbing the data from a form - I cut the code down to its basics for the post.)

def save_story   story = Story.new(params[:story])   story.save   story.tag_with(params[:story][:tag_list])   story.save end

Near as I can tell, it's not possible to successfully tag a taggable item until the item has an id. Saving the item once before tagging will generate that id for me, allowing me to save the item a second time, which registers the tagging information.

Thought I'd ping the group. Anyone with solid acts_as_taggable experience who can tell me a better way to do the above?

I do not believe there is a better way to do this. The id must be created first to be stored in the taggable join table.

Try keeping your controller skinny by adding accessors and callbacks to your model.

class Story < ActiveRecord::Base   after_save :tagify   attr_accessor :tag_list

  def tagify     self.tag_list = tag_list.split(',') if tag_list.is_a? String # comma, or whatever     tag_list.each { |tag| tag_with(tag) }   end end

Now, in your controller:

def save_story   Story.create(params[:story]) end

Ask and you shall receive - check this out: http://blog.hasmanythrough.com/2007/1/22/using-faux-accessors-to-initialize-values